200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > 提高你的Java代码质量吧:推荐在复杂字符串操作中使用正则表达式

提高你的Java代码质量吧:推荐在复杂字符串操作中使用正则表达式

时间:2024-02-12 20:31:08

相关推荐

提高你的Java代码质量吧:推荐在复杂字符串操作中使用正则表达式

一、分析

字符串的操作,诸如追加、合并、替换、倒序、分隔等,都是在编码过程中经常用到的,而且Java也提供了append、replace、reverse、split等方法来完成这些操作,它们使用起来确实方便,但是更多的时候,需要使用正则表达式来完成复杂的处理。

二、场景

统计一篇文章中的单词的数量,代码如下:

public static void main(String[] args){ //接受键盘输入 Scanner input = new Scanner(System.in); while(input.hasNext()){ String str = input.nextLine(); //使用split方法分隔后统计 int wordsCount = str.split(" ").length; System.out.println(str + "单词数:" + wordsCount); } }

使用split方法根据空格来分隔单词,然后计算分隔后的数组长度,这种方法可靠吗?我们看输出:

Today is Monday

Today is Monday 单参数:3

Today is Monday

Today is Monday 单词数:4

Today isMonday?No!

Today isMonday?No! 单词数:3

I'm Ok.

I'm Ok. 单词数:2

注意到,除了第一个正确外,其它的都是错误的。第二条输入单词"Monday"前有两个空格,第三条输入中"NO"单词的前后没有空格,最后一个输入则没有把连写符号“'”考虑进去,这样统计出来的单词数量肯定错误一堆,那怎样才合理呢?

可以考虑使用正则表达式,代码如下:

public static void main(String[] args){ //接受键盘的输入 Scanner input = new Scanner(System.in); while(input.hasNext()){ String str = input.nextLine(); //正则表达式对象 Pattern pattern = pile("\\b\\w+\\b"); //生成匹配器 Matcher matcher = pattern.matcher(str); //记录单场数量 int wordsCount = 0; //遍历查找匹配,统计单场数量 while(matcher.find()){ wordsCount++; } System.out.println(str + "单词数:" + wordsCount); } }

准不准确,我们看输入产生的结果:Todayis Monday

Today is Monday 单参数:3

Today is Monday

Today is Monday 单词数:3

Today isMonday?No!

Today isMonday?No! 单词数:4

I'm Ok.

I'm Ok. 单词数:3

每项输出都是正确的,而且程序也不复杂,先生成一个正则表达式对象,然后使用匹配器进行匹配,之后通过一个while循环统计匹配的数量。

三、建议

正则表达式在字符串的查找、替换、剪切、复制、删除等方面都有着非凡的作用,特别是面对大量的文本字符串需要处理(如果需要锤炼大量的LOG日志)时,使用正则表达式可以大幅提高开发效率和系统性能。

但是正则表达式是一个恶魔,它会使程序难以读懂。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。