您当前的位置: 首页 > 学无止境 > 心得笔记 网站首页心得笔记
【第11章:Java常用类库】_正则表达式
发布时间:2020-12-26 12:01:27编辑:雪饮阅读()
对于一个字符串我们如何判断这个字符串是纯数字组成?
可以从ascii码表中找到答案。
则可以总结出来,只要ascii码的值小于字符0的ascii和ascii码的值大于9的ascii字符就都不是数字。则我们可以写出如下程序来判断一个字符串是否由纯数字组成。
public class TestJava{
public static void main(String args[]){
String str = "1234567890" ;
boolean flag = true ;
char c[]=str.toCharArray();
for(int i=0;i<c.length;i++){
if(c[i]<'0' || c[i]>'9'){
flag=false;
break;
}
}
if(flag){
System.out.println("是由数字组成");
}
else{
System.out.println("不是由数字组成");
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
是由数字组成
但是如果用正则表达式来解决这个问题就能省下好多代码
import java.util.regex.Pattern ;
public class TestJava{
public static void main(String args[]){
String str = "1234567890" ;
if(Pattern.compile("[0-9]+").matcher(str).matches()){
System.out.println("是由数字组成");
}
else{
System.out.println("不是由数字组成");
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
是由数字组成
import java.util.regex.Pattern ;
public class TestJava{
public static void main(String args[]){
String str = "12345678x90" ;
if(Pattern.compile("[0-9]+").matcher(str).matches()){
System.out.println("是由数字组成");
}
else{
System.out.println("不是由数字组成");
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
不是由数字组成
?在正则中表示其前面匹配的东西可以有也可以没有,如果有,则只能有一个
import java.util.regex.Pattern ;
public class TestJava{
public static void main(String args[]){
String str = "" ;
if(Pattern.compile("[0-9]?").matcher(str).matches()){
System.out.println("是由数字组成");
}
else{
System.out.println("不是由数字组成");
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
是由数字组成
*在正则中表示其前面匹配的内容可以有可以没有,可以多个
import java.util.regex.Pattern ;
public class TestJava{
public static void main(String args[]){
String str = "" ;
if(Pattern.compile("[0-9]*").matcher(str).matches()){
System.out.println("是由数字组成");
}
else{
System.out.println("不是由数字组成");
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
是由数字组成
+在正则中表示其前面匹配的内容至少有一个,可以多个
import java.util.regex.Pattern ;
public class TestJava{
public static void main(String args[]){
String str = "" ;
if(Pattern.compile("[0-9]+").matcher(str).matches()){
System.out.println("是由数字组成");
}
else{
System.out.println("不是由数字组成");
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
不是由数字组成
{n}在正则表达式中表示其前面匹配内容必须出现n次
import java.util.regex.Pattern ;
public class TestJava{
public static void main(String args[]){
String str = "" ;
if(Pattern.compile("[0-9]{5}").matcher(str).matches()){
System.out.println("是由数字组成");
}
else{
System.out.println("不是由数字组成");
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
不是由数字组成
{n,}在正则表达式中表示其前匹配内容至少出现n次
import java.util.regex.Pattern ;
public class TestJava{
public static void main(String args[]){
String str = "" ;
if(Pattern.compile("[0-9]{5,}").matcher(str).matches()){
System.out.println("是由数字组成");
}
else{
System.out.println("不是由数字组成");
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
不是由数字组成
{n,m}在正则表达式中表示其前匹配内容最少出现n次,最多出现m次
import java.util.regex.Pattern ;
public class TestJava{
public static void main(String args[]){
String str = "" ;
if(Pattern.compile("[0-9]{5,8}").matcher(str).matches()){
System.out.println("是由数字组成");
}
else{
System.out.println("不是由数字组成");
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
不是由数字组成
\d在正则表达式中表示其前匹配内容必须是数字,但是由于\d带有\,而\又正好是转义字符,所以使用的时候一般都是\\d如:
import java.util.regex.Pattern ;
public class TestJava{
public static void main(String args[]){
if(Pattern.compile("\\d{4}-\\d{2}-\\d{2}").matcher("2020-12-26").matches()){
System.out.println("是日期");
}
else{
System.out.println("不是日期");
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
是日期
Pattern进行正则匹配之后返回的实例也是Pattern类型,而Pattern还提供split用于通过正则匹配来拆分字符串。如
import java.util.regex.Pattern ;
public class TestJava{
public static void main(String args[]){
String s[]=Pattern.compile("\\d+").split("2020-12-26");
for(String x:s){
System.out.println(x);
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
-
-
replaceAll是Pattern.compile. matcher之后返回的实例所提供,该实例是Matcher类型,但如果连贯操作,则不需要单独引入Matcher类,至少我这里就是这样的。
replaceAll就是通过正则的方式提供字符串中所有满足正则匹配的字符为目标字符。
import java.util.regex.Pattern ;
public class TestJava{
public static void main(String args[]){
String newStr=Pattern.compile("\\d+").matcher("2020-12-26").replaceAll("+");
System.out.println(newStr);
}
}
D:\>javac TestJava.java
D:\>java TestJava
+-+-+
replaceAll不仅仅是Pattern.compile. matcher返回实例的功能,这样反而比较麻烦,提示,字符串对象也提供了replaceAll方法,而且使用起来更加简单。
public class TestJava{
public static void main(String args[]){
String newStr="2020-12-26".replaceAll("\\d+","+");
System.out.println(newStr);
}
}
D:\>javac TestJava.java
D:\>java TestJava
+-+-+
split方法与matches方法也可以在String中直接使用,如
public class TestJava{
public static void main(String args[]){
boolean temp="2020-12-26".matches("\\d{4}-\\d{2}-\\d{2}");
String s[]="hajsdkhj23kjaskd22jkkl08kkl07".split("\\d+");
System.out.println("---------匹配结果:"+temp+"----");
System.out.println("---------拆分结果-----------");
for(String xs:s){
System.out.print(xs+" ");
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
---------匹配结果:true----
---------拆分结果-----------
hajsdkhj kjaskd jkkl kkl
字符串的split方法应用范例
public class TestJava{
public static void main(String args[]){
String info = "kausumi:24|gaojiupan:18|moniji:25";
String s[] = info.split("\\|") ;
System.out.println("字符串的拆分:") ;
for(int x=0;x<s.length;x++){
String s2[] = s[x].split(":") ;
System.out.println(s2[0] + "\t" + s2[1]) ;
}
}
}
D:\>javac TestJava.java
D:\>java TestJava
字符串的拆分:
kausumi 24
gaojiupan 18
moniji 25
关键字词:java,正则表达式
相关文章
- 【第11章:Java常用类库】_观察者设计模式
- 【第11章:Java常用类库】_比较器(Comparable、Comparato
- 【第11章:Java常用类库】_Arrays
- 【第11章:Java常用类库】_对象克隆技术
- 【第11章:Java常用类库】_大数操作(BigIntger、BigDecim
- 【第11章:Java常用类库】_NumberFormat
- 【第11章:Java常用类库】_Math与Random类
- 〖第11章:Java常用类库〗_实例操作:取得当前日期
- 【第11章:Java常用类库】_日期操作类(DateFormat、Simpl
- 【第11章:Java常用类库】_日期操作类(Date、Calendar)