我正在尝试对String执行以下操作。

    if (combatLog.contains("//*name//*")) {
        combatLog.replaceAll("//*name//*",glad.target.name);
    }


斜杠是我试图摆脱*的尝试,因为没有它们就无法工作。我还尝试了一个斜杠,并在contains或replaceAll上分别进行了斜杠。谢谢

最佳答案

不要忘记字符串的不变性,并重新分配新创建的字符串。另外,如果您的if块不再包含任何代码,则根本不需要if检查。

您有3种选择:

if (combatLog.contains("*name*")) { // don't escape in contains()
    combatLog = combatLog.replaceAll("\\*name\\*", replacement);// correct escape
}
// another regex based solution
if (combatLog.contains("*name*")) {
    combatLog = combatLog.replaceAll("[*]name[*]", replacement);// character class
}


或没有正则表达式

if (combatLog.contains("*name*")) {
    combatLog = combatLog.replace("*name*", replacement);// literal string
}

08-16 12:53