我必須檢查File1中的單詞是否存在於File2中,然後進行計數。這兩個文件中的數據如下所示。String.contains函數不起作用
File1中的字被如下所示:
- 發表
- 發愁
- 發達
- 發抖
- 發揮
在文件2的數據被如下所示:
- 這篇論文是什麼時候發表的?
- 91。數據刪掉被馬工程師了
- 92。駕駛酒後很大危害
- 93。客觀地要他人評價
- 94 。我不小心水壺打翻了把
我寫的代碼如下:
File file1 = new File("ChineseWord.txt");
Scanner sc = new Scanner(new FileInputStream(file1));
ArrayList<String> list = new ArrayList<String>();
ArrayList<String> newList = new ArrayList<String>();
while(sc.hasNext()){
list.add(sc.next());
}
sc.close();
File file2 = new File("RandomData.txt");
Scanner newScanner = new Scanner(new FileInputStream(file2));
int count = 0;
for (int i = 0; i < list.size(); i++) {
while(newScanner.hasNext()){
String word = newScanner.nextLine();
String toMatch = list.get(i);
if(word.contains(toMatch)){
System.out.println("Success");
count++;
}
}
String test = list.get(i);
newList.add(test+"exists" + count+ "times");
count =0;
}
問題是它對所有單詞都返回0,而File1中的第一個單詞存在於File2的第一行。如果我手動做這樣的事情
if(word.contains("發表")){
System.out.println("Success");
count++;
}
它打印成功,否則它不會?這是爲什麼?
見http://stackoverflow.com/questions/22048692/check-if-string-contains-cjk-chinese-characters and http://stackoverflow.com/questions/26357938/detect-chinese-character-in-java – Adi
我會確保字符編碼讀取是您寫的。您可以嘗試使用UTF-8或UTF-16LE,但必須保持一致。 –
字符編碼是UTF-8 – indexOutOfBounds