有没有一种方法可以计算单词在字符串中重复的次数?

时间:2018-11-26 01:45:09

标签: java string

我的字符串超过100000个单词。它是一本书。它包含大约x个章节:

chapter 1
text text text
chapter 2
text text text 
 and so on

如何获取总章节数?(最后一章)?

例如:chapter 117

我尝试过这个:

   String[] words = book.split(" ");
        ArrayList<Integer> chapterPositions = new ArrayList<Integer>();
        int count = 0;
        for (String a : words) {
            if (a.equals("Chapter")) {
                chapterPositions.add(count + 1);
            }
            count++;
        }
        num_chapters = Integer.parseInt(words[(chapterPositions.get(chapterPositions.size() - 1))]);
        Toast.makeText(getApplicationContext(), Integer.toString(num_chapters), Toast.LENGTH_LONG).show();

但获取异常: NumberFormatException:对于输入字符串:“ 1 The”

2 个答案:

答案 0 :(得分:1)

因为“书”字符串中不仅存在空格,而且还存在换行符,制表符等。 您应该改用以下正则表达式:

String[] words = book.split("\\s+");

答案 1 :(得分:0)

我认为更好的方法是逐行读取文件,并使用带有Chapter\\s+[0-9]+Pattern java类的正则表达式,例如Matcher,然后计算匹配数

因此,您无需将整个文件加载到内存中,不需要先遍历字符串以进行拆分,然后再进行遍历以找到匹配项。