写入一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。
1 /** 2 * 写入一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。 3 * @param fileName 文件名 4 * @param str 查找的字符串 5 * @return 6 * @throws Exception 7 */ 8 //方法一 9 public static int funCount1(String fileName,String str) throws Exception { 10 int count = 0; 11 BufferedReader bf = new BufferedReader(new InputStreamReader(new FileInputStream(fileName))); 12 String line ; 13 StringBuilder sb = new StringBuilder(); 14 while((line = bf.readLine() )!= null) { 15 sb = sb.append(line); 16 } 17 int a = 0; 18 while((a = sb.indexOf(str)) != -1) { 19 sb = sb.delete(a, a + str.length()); 20 count++; 21 } 22 return count; 23 } 24 25 //方法二:正则表达式 26 public static int funCount2(String fileName,String str) throws Exception { 27 int count =0 ; 28 BufferedReader bf = new BufferedReader(new InputStreamReader(new FileInputStream(fileName))); 29 String line ; 30 StringBuilder sb = new StringBuilder(); 31 while((line = bf.readLine() )!= null) { 32 sb = sb.append(line); 33 } 34 String pattern = ".*" + str + ".*"; 35 while(Pattern.matches(pattern, sb.toString())) { 36 count ++; 37 int a = sb.indexOf(str); 38 sb.delete(a, a + str.length()); 39 } 40 return count; 41 }
个人并不推荐正则表达式来写这道题,因为都要用到indexOf,很明显用正则还需要编译正则表达式匹配模式,然后对输入字符串进行解释和匹配操作;很明显复杂了些;