下面是我在工作的代碼:計數特定字符串的發生在一個文件
while ((lineContents = tempFileReader.readLine()) != null)
{
String lineByLine = lineContents.replaceAll("/\\.", System.getProperty("line.separator")); //for matching /. and replacing it by new line
changer.write(lineByLine);
Pattern pattern = Pattern.compile("\\r?\\n"); //Find new line
Matcher matcher = pattern.matcher(lineByLine);
while(matcher.find())
{
Pattern tagFinder = Pattern.compile("word"); //Finding the word required
Matcher tagMatcher = tagFinder.matcher(lineByLine);
while(tagMatcher.find())
{
score++;
}
scoreTracker.add(score);
score = 0;
}
}
我的樣品輸入包含6行,用word
OCCURENCES是[0,1,0,3,0,0]
所以,當我打印scoreTracker
(這是一個ArrayList
)我想要上面的輸出。 但相反,我得到[4,4,4,4,4,4]
這是word
的總髮生率,但不是一行一行。 請幫忙。
但這就是爲什麼我在我的「String」中首先找到一個新行,然後將結果應用於我的分數的原因。 matcher的'while'循環?我錯了嗎? – 2012-03-13 18:42:21
@KazekageGaara你的代碼有兩個問題。一個是,第一個正則表達式'pattern'用於找到一個新的行分隔符。它不捕獲線路本身。所以你需要將正則表達式改爲'(。*)\\ r?\\ n'。其次,你正在調用'matcher.find()',而不是在任何地方調用'matcher.group()'來提取匹配。做出這兩個改變,它應該沒問題。有關'Matcher'對象的更多信息,請點擊http://docs.oracle.com/javase/1.4.2/docs/api/java/util/regex/Matcher.html – 2012-03-13 18:46:10
謝謝! :-) – 2012-03-13 19:05:42