統計某字符串在文件中出現的次數


有幾點注意事項:

  • 默認文件里的字符串是按行進行統計的,如果字符串存在跨行的情況,那需要考慮把字符串進行拼接、去除換行符。這里未考慮
  • 字符串里出現的字符串的次數的問題可以使用: 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;
    }

}

 


原文鏈接
 


 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM