代码之家  ›  专栏  ›  技术社区  ›  joao-m-santos

Java:替换循环中的字符串时出现问题

  •  0
  • joao-m-santos  · 技术社区  · 8 年前

    这是一段代码,用于查找查询字符串是否包含某个单词,如果包含,则用翻译后的值替换它。

    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”或“blue mykeyword”)并且翻译的值不同时,例如,mykeyword elpalavra和“blue mykeyword” 翻译为 “elpalavra azul”。在这种情况下,结果字符串将是“(elpalavra或“blue elpalavra”),而它应该是“(elpalavra或“elpalavra azul”)。我知道,在第一个循环中,它替换了所有关键字,在第二个循环中,它不再包含它应该用于翻译的原始值。 我怎样才能解决这个问题?

    非常感谢。

    2 回复  |  直到 8 年前
        1
  •  1
  •   Serge-Zh    8 年前

    这样,您首先替换“blue mykeyword”,然后才替换“mykeyword”

        2
  •  0
  •   albert_nil    8 年前

    “toCheck”变量没有解释它的用途,在任何情况下,它的使用方式看起来都很奇怪(至少在我看来)。

    除此之外,回答您的请求的一种方法可以是(仅基于您指定的要求):