打字猴:1.70044277e+09
1700442770 编写高质量代码:改善Java程序的151个建议 [:1700438127]
1700442771 编写高质量代码:改善Java程序的151个建议 建议57:推荐在复杂字符串操作中使用正则表达式
1700442772
1700442773 字符串的操作,诸如追加、合并、替换、倒序、分割等,都是在编码过程中经常用到的,而且Java也提供了append、replace、reverse、split等方法来完成这些操作,它们使用起来也确实方便,但是更多的时候,需要使用正则表达式来完成复杂的处理,我们来看一个例子:统计一篇文章中英文单词的数量,很简单吧?代码如下:
1700442774
1700442775 public static void main(String[]args){
1700442776
1700442777 //接收键盘输入
1700442778
1700442779 Scanner input=new Scanner(System.in);
1700442780
1700442781 while(input.hasNext()){
1700442782
1700442783 String str=input.nextLine();
1700442784
1700442785 //使用split方法分隔后统计
1700442786
1700442787 int wordsCount=str.split(””).length;
1700442788
1700442789 System.out.println(str+“单词数:”+wordsCount);
1700442790
1700442791 }
1700442792
1700442793 }
1700442794
1700442795 使用split方法根据空格来分割单词,然后计算分隔后的数组长度,这种方法可靠吗?可行吗?我们来看输出:
1700442796
1700442797 Today is Monday
1700442798
1700442799 Today is Monday单词数:3
1700442800
1700442801 Today is Monday
1700442802
1700442803 Today is Monday单词数:4
1700442804
1700442805 Today is Monday?No!
1700442806
1700442807 Today is Monday?No!单词数:3
1700442808
1700442809 I’m Ok.
1700442810
1700442811 I’m Ok.单词数:2
1700442812
1700442813 注意看输出,除了第一个输入“Todady is Monay”正确外,其他都是错误的!第二条输入中单词“Monday”前有2个连续的空格,第三条输入中“NO”单词的前后都没有空格,最后一个输入则没有把连写符号“’”考虑进去,这样统计出来的单词数量肯定错误一堆,那怎么做才合理呢?
1700442814
1700442815 如果考虑使用一个循环来处理这样的“异常”情况,会使程序的稳定性变差,而且要考虑太多太多的因素,这让程序的复杂性也大大提高了。那如何处理呢?可以考虑使用正则表达式,代码如下:
1700442816
1700442817 public static void main(String[]args){
1700442818
1700442819 //接收键盘输入
[ 上一页 ]  [ :1.70044277e+09 ]  [ 下一页 ]