有幾點注意事項:
- 默認文件里的字符串是按行進行統計的,如果字符串存在跨行的情況,那需要考慮把字符串進行拼接、去除換行符。這里未考慮
- 字符串里出現的字符串的次數的問題可以使用: indexOf 方法配合 substring 方法獲取;正則表達匹配;替換指定單詞未空,通過縮減長度 / 單詞長度,即未次數。這里只用正則實現
package constxiong.interview; import java.io.BufferedReader; import java.io.FileNotFoundException; import java.io.FileReader; import java.io.IOException; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 統計某字符串在文件中出現的次數 * * @author ConstXiong */ public class TestCountWord { public static void main(String[] args) { String filePath = "/Users/handsome/Desktop/a.txt"; String word = "ConstXiong"; System.out.println(countWordAppearTimes(filePath, word)); } /** * 統計每行的出現單詞的出現次數之后 * @param filePath * @param word * @return */ public static int countWordAppearTimes(String filePath, String word) { int times = 0; FileReader fr = null; BufferedReader br = null; try { fr = new FileReader(filePath); br = new BufferedReader(fr); String line; while ((line = br.readLine()) != null) {//讀文件每行字符串 //按照單詞正則查找出現次數 Pattern p = Pattern.compile(word); Matcher m = p.matcher(line); while (m.find()) { times++; } } } catch (IOException e) { e.printStackTrace(); } finally { if (fr != null) { try { fr.close(); } catch (IOException e) { e.printStackTrace(); } } if (br != null) { try { br.close(); } catch (IOException e) { e.printStackTrace(); } } } return times; } }
- Java 自學經歷
- Java 面試題 H5
- Java 面試題小程序