依照模式匹配、替换和分隔字符串

可以通过指定某个模式来匹配、替换或分隔一个字符串。这是一种非常有用且功能强大的特性,通常称为正则表达式。
以String类中的matches方法开始。乍一看,matches方法和equals方法非常相似。例如,下面两条语句的值均为true:

"Java”.matches("Java");
"Java".equals("Java");

 

但是,matches方法的功能更强大。它不仅可以匹配定长的字符串,还能匹配一套遵从某种模式的字符串。例如,下面语句的结果均为true:

"Java is fun".matches("Java.*");
"Java is cool".matches("Java.*");
"Java is powerful".matches("Java.*");

 

在前面语句中的"Java.*"是一个正则表达式。它描述的字符串模式是心字符串Java开始的,后面紧跟任意0个或多个字符。这里,子串.*与0个或多个字符相匹配。

方法replaceAll、replaceFirst和split也可以和正则表达式结合在一起使用。例如,下面的语句用字符串NNN替换"a+b$#c"中的$、+或者#,然后返回一个新字符串。

String s = "a+b$#c".replaceAll("[$+#]","NNN");
System.out.println(s);

 

这里的正则表达式[$+#]表示能够匹配$、+或者#的模式。所以,输出是aNNNbNNNNNNc。

下面的语句将字符串分隔为由标点符号分隔开的字符串数组。

String[] tokens = "Java.C?C#,C++".split("[. , : ; ?]");
for(int i = 0, i< tokens.length; i++)
  System.out.println(tokens[ i ]);

这里的正则表达式[. , : : ?]指定的模式是指匹配. , : ;或者?。这里的每个字符都是分隔字母字符串的分隔符。因此,这个字符串就被分割成Java、C、C#和C++,它们都存储在数组tokens中。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值