2012-01-10 58 views
0

我正在製作一個關於客戶端/服務器編程的程序,其中用戶將在控制檯中輸入一個字符串,程序將搜索每一行.txt文件該字符串,並輸出特定字符串所在的整行。StringTokenizer似乎不能在我的程序中工作 - Java

這是代碼的一部分,其中使用的StringTokenizer:

String line = ""; 
boolean wordFound = false; 

while((line = bufRead.readLine()) != null) { 
    StringTokenizer str = new StringTokenizer(line, ", .();:-?!'"); 

    while(str.hasMoreTokens()) { 
     String next = str.nextToken(); 
     if(next.equalsIgnoreCase(targetWord)) { 
      wordFound = true; 
      output = line; 
      break; 
     } 
    } 

    if(wordFound) break; 
    else output = "Quote not found."; 
}  

的問題是,當我要搜索的字符串例如「你是」或「這是我的生日」(帶撇號和/或空格),它給布爾型wordFound提供了一個錯誤的值。我嘗試刪除分隔符「」和「'」,但仍然無效。

我曾經修改了代碼,我有時會爲布爾型wordFound獲得一個真正的值,但現在看起來它並不忽略這種情況。例如我輸入了「你是」,wordFound就變成了真的。但是如果我將它改爲「你是」或「你是再」,wordFound仍然是錯誤的。

有人可以幫我找到解決這個問題的辦法嗎?謝謝。

回答

1

你的字符串標記應該是:

StringTokenizer str = new StringTokenizer(line, ", .();:-?!\""); 

在你的代碼有StringTokenizer(line, ", .();:-?!'");'代替",這是令牌化文本you're"youre"