这个题目用到正则表达式,正则表达式是一种可以用于模式匹配和替换的规范.
字符串对象(String)调用matches()可以判断当前字符串对象是否与参数regex指定的正则表达式匹配.
String上可以使用正则表达式的操作,实际上是利用了java.util.regex.Pattern与java.util.regex.Matcher的功能.当调用String的matches()方法时,实际上是调用了Pattern的静态方法matches(),这个方法会返回boolean值,表示字符串是否符合正则表达式.
将正则表达式视为一个对象来重复使用,使用pattern的静态方法compile()进行编译.这个方法会返回一个Pattern的实例,这个实例代表正则表达式,之后可以重复使用Pattern实例的matcher()方法来返回一个Matcher的实例,代表符合正则表达式的实例.
1 import java.util.Scanner; 2 import java.util.regex.Matcher; 3 import java.util.regex.Pattern; 4 5 public class Test5_1 { 6 public static void main(String[] args){ 7 int countC=0,countW=0,countS=0; //分别表示字符,单词和句子的个数 8 Scanner in=new Scanner(System.in); 9 System.out.print("input a english sentence:"); 10 String st=in.nextLine(); //用nextInt接收,是以回车作为分隔符.而用next接受,是以空格作为分隔符. 11 Pattern p2=Pattern.compile("[ ,.!?]"); //与[]中的任意一个字符匹配即可.分别有空格,逗号,句号,感叹号,问号.用以统计单词个数. 12 Matcher m2=p2.matcher(st); 13 Pattern p1=Pattern.compile("[a-zA-Z ,.!?]"); //匹配一段话中字符的个数 14 Matcher m1=p1.matcher(st); 15 Pattern p3=Pattern.compile("[.!?]"); //匹配一段话中句子的个数 16 Matcher m3=p3.matcher(st); 17 boolean result2=m2.find(); 18 while(result2){ 19 countW++; 20 result2=m2.find(); //判断是否找到并统计个数 21 } 22 boolean result1=m1.find(); 23 while(result1){ 24 countC++; 25 result1=m1.find(); 26 } 27 boolean result3=m3.find(); 28 while(result3){ 29 countS++; 30 result3=m3.find(); 31 } 32 System.out.println("单词个数:"+countW); 33 System.out.println("字符个数:"+countC); 34 System.out.println("句子个数:"+countS); 35 } 36 }