如何从JAVA中的字符串中删除转义字符

时间:2012-09-14 10:54:04

标签: java regex

我输入了"\\{\\{\\{testing}}}"之类的字符串,我想删除所有"\"。要求o / p:"{{{testing}}}"

我正在使用以下代码来完成此任务。

protected String removeEscapeChars(String regex, String remainingValue) {
    Matcher matcher = Pattern.compile(regex, Pattern.CASE_INSENSITIVE).matcher(remainingValue);
    while (matcher.find()) {
        String before = remainingValue.substring(0, matcher.start());
        String after = remainingValue.substring(matcher.start() + 1);
        remainingValue = (before + after);
    }
    return remainingValue;
}

我正在将正则表达式作为"\\\\{.*?\\\\}"传递。

代码仅在第一次出现" \ {"但并非所有事件都发生。 查看不同输入的以下输出。

  1. i / p:"\\{testing}" - o / p:"{testing}"
  2. i / p:"\\{\\{testing}}" - o / p:"{\\{testing}}"
  3. i / p:"\\{\\{\\{testing}}}" - o / p:"{\\{\\{testing}}}"
  4. 我希望"\"应从传递的i / p字符串中删除,并且所有"\\{"都应替换为"{"

    我觉得问题在于正则表达式值,即"\\\\{.*?\\\\}"

    任何人都可以让我知道应该获得所需的正则表达式值o / p。

4 个答案:

答案 0 :(得分:11)

您不仅仅使用String#replace

的原因
String noSlashes = input.replace("\\", "");

或者,如果您只需要在打开花括号之前删除反斜杠:

String noSlashes = input.replace("\\{", "{");

答案 1 :(得分:2)

它应该如下所示:

String result = remainingValue.replace("\\", "");

答案 2 :(得分:1)

如前所述,如果你只想删除\之前的斜杠{,最好的方法就是使用

String noSlashes = input.replace("\\{", "{");

但是在你的问题中,你问过任何人都可以告诉我应该是什么样的正则表达式值。如果您使用的是正则表达式,因为您希望不仅在\之前删除{,而只在之后使用{正确关闭的那些}中删除{{1}},那么答案是:不。 You can't match nested {} with regex.

答案 3 :(得分:0)

更改RegEx:"\\&([^;]{6})"

private String removeEscapeChars(String remainingValue) {
        Matcher matcher = Pattern.compile("\\&([^;]{6})", Pattern.CASE_INSENSITIVE).matcher(remainingValue);
        while (matcher.find()) {
            String before = remainingValue.substring(0, matcher.start());
            String after = remainingValue.substring(matcher.start() + 1);
            remainingValue = (before + after);
        }
        return remainingValue;
    }

应该有效..