写入一个方法,输入一个文件名和一个字符串,统计这个字符串在这个文件中出现的次数。

 

 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,很明显用正则还需要编译正则表达式匹配模式,然后对输入字符串进行解释和匹配操作;很明显复杂了些;