我的字符串超过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”
答案 0 :(得分:1)
因为“书”字符串中不仅存在空格,而且还存在换行符,制表符等。 您应该改用以下正则表达式:
String[] words = book.split("\\s+");
答案 1 :(得分:0)
我认为更好的方法是逐行读取文件,并使用带有Chapter\\s+[0-9]+
和Pattern
java类的正则表达式,例如Matcher
,然后计算匹配数
因此,您无需将整个文件加载到内存中,不需要先遍历字符串以进行拆分,然后再进行遍历以找到匹配项。