我想用 java 中名为 myStr 的字符串替换所有出现的 +- 。我还想用 myStr 中的 + 替换所有出现的 --。以下两行代码在 java 中没有做到这一点:
myStr.replaceAll("\\+-", "-");
myStr.replaceAll("\\--", "+");
谁能告诉我如何更改这两行代码来完成所需的替换?
我通常会尽量避免使用正则表达式,但不确定如何在没有它们的情况下执行此操作。
您正在丢弃函数的返回值。您可能想使用:
myStr = myStr.replaceAll("\\+-", "-").replaceAll("--", "+");
更新评论中的其他信息:
一定要保留 的返回值replaceAll
。
myStr = myStr.replaceAll("\\+-", "-");
然后
myStr = myStr.replaceAll("--", "+");
public static String escapePlusMinus(String myStr) {
Pattern pattern = Pattern.compile("[+-]-");
Matcher matcher = pattern.matcher(myStr);
StringBuffer result = new StringBuffer();
while (matcher.find()) {
if (matcher.group(0).equals("+-")) {
matcher.appendReplacement(result, "-");
}
else {
matcher.appendReplacement(result, "+");
}
}
matcher.appendTail(result);
return result.toString();
}
escapePlusMinus("+-, --, +-, ---+---")
⇒"-, +, -, +--+"
最后一个令牌匹配为:
"--"
⇒"+"
"-"
跳过,因为没有其他人"-"
跟随它。"+-"
⇒"-"
"--"
⇒"+"