0

我想用 java 中名为 myStr 的字符串替换所有出现的 +- 。我还想用 myStr 中的 + 替换所有出现的 --。以下两行代码在 java 中没有做到这一点:

myStr.replaceAll("\\+-", "-");  
myStr.replaceAll("\\--", "+");  

谁能告诉我如何更改这两行代码来完成所需的替换?

我通常会尽量避免使用正则表达式,但不确定如何在没有它们的情况下执行此操作。

4

2 回答 2

5

您正在丢弃函数的返回值。您可能想使用:

myStr = myStr.replaceAll("\\+-", "-").replaceAll("--", "+");

更新评论中的其他信息:

一定要保留 的返回值replaceAll

myStr = myStr.replaceAll("\\+-", "-");

然后

myStr = myStr.replaceAll("--", "+");
于 2013-04-15T19:13:54.813 回答
0
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("+-, --, +-, ---+---")"-, +, -, +--+"

最后一个令牌匹配为:

  1. "--""+"
  2. "-"跳过,因为没有其他人"-"跟随它。
  3. "+-""-"
  4. "--""+"
于 2013-04-15T19:58:39.310 回答