我正在構建一個自動翻譯Java中布爾查詢的小應用程序。Java:在替換循環中的字符串時出現問題
這是查找查詢字符串是否包含某個單詞的代碼,如果是,則用替換後的值與翻譯後的值進行比較。
int howmanytimes = originalValues.size();
for (int y = 0; y < howmanytimes; y++) {
String originalWord = originalValues.get(y);
System.out.println("original Word = " + originalWord);
if (toReplace.contains(" " + originalWord.toLowerCase() + " ")
|| toCheck.contains('"' + originalWord.toLowerCase() + '"')) {
toReplace = toReplace.replace(originalWord, translatedValues.get(y).toLowerCase());
System.out.println("replaced " + originalWord + " with " + translatedValues.get(y).toLowerCase());
}
System.out.println("to Replace inside loop " + toReplace);
}
問題是,當一個查詢有,例如,「(mykeyword OR‘藍色mykeyword’)」和轉換後的值是不同的,例如,mykeyword 轉化爲 elpalavra和「藍mykeyword」 翻譯爲「elpalavra azul」。在這種情況下會發生什麼情況是,當它應該是'(elpalavra OR「elpalavra azul」)'時,結果字符串將是'(elpalavra OR「藍色elpalavra」)'。我明白,在第一個循環中,它會替換所有關鍵字,並在第二個循環中不再包含它應該翻譯的原始值。 我該如何解決這個問題?
謝謝
一種方法是將其全部分割成一個數組,然後循環遍歷數組,如果找到關鍵字,則轉換它,否則跳過它。 –
爲什麼在形成查詢之後而不是之前做翻譯? –
https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/text/StrSubstitutor.html可能是一個很好的方法來做到這一點 – 2017-07-28 11:31:00