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』)」であり、翻訳の値が異なっていて、例えば、が elpalavra及び「青mykeyword」に変換mykeyword "elpalavra azul"に翻訳されています。この場合、結果文字列は '(elpalavra OR "elpalavra azul")'になるはずです(elpalavra OR "blue elpalavra")。最初のループではすべてのキーワードが置き換えられ、2番目のループでは元の値が含まれなくなりました。 これを修正するにはどうすればよいですか?
ありがとうございました
1つの方法は、すべてを配列に分割し、配列をループし、キーワードが見つかった場合はそれをスキップし、それ以外の場合はスキップします。 –
以前に比べてクエリを作成した後に翻訳を行う理由は何ですか? –
https://commons.apache.org/proper/commons-lang/apidocs/org/apache/commons/lang3/text/StrSubstitutor.htmlこれを行う良い方法かもしれません –