zoukankan      html  css  js  c++  java
  • 统计某字符串在文件中出现的次数

    有几点注意事项:

    • 默认文件里的字符串是按行进行统计的,如果字符串存在跨行的情况,那需要考虑把字符串进行拼接、去除换行符。这里未考虑
    • 字符串里出现的字符串的次数的问题可以使用: 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中的Iterator和Iterable 区别
    Ubuntu 12.04 部署 PostGIS 2.1
    postgres模板数据库
    在ubuntu 10.04 上QGIS的安装步骤
    js----解决异步之Generator && async
    js----promise.all() promise.race()
    js----异步之Promise,Generator,Async
    js----CSRF-跨站请求伪造攻击
    js----js实现继承的方式及其优缺点
    vue----nextTick获取最新dom结构
  • 原文地址:https://www.cnblogs.com/ConstXiong/p/12164925.html
Copyright © 2011-2022 走看看