如何制作multi replace()java

时间:2017-02-08 16:13:24

标签: java string special-characters newline carriage-return

我的字符串中包含\r\n\r\n\"字符。我怎样才能更快地更换它们?

我已经拥有的是:

String s = "Kerner\\r\\n kyky\\r hihi\\n \\\"";
System.out.println(s.replace("\\r\\n", "\n").replace("\\r", "").replace("\\n", "").replace("\\", ""));

但我的代码看起来不够漂亮。 我在互联网上找到了类似的东西:

replace("\\r\\n|\\r|\\n|\\", "")

我试过了,但它没有用。

4 个答案:

答案 0 :(得分:1)

您可以将其包装在方法中,将/r/n/n/r放入列表中。迭代列表并替换所有这些字符并返回修改后的字符串。

public String replaceMultipleSubstrings(String original, List<String> mylist){
    String tmp = original;
    for(String str: mylist){
        tmp = tmp.replace(str, "");
    }
    return tmp;
}

测试:

mylist.add("\\r");
mylist.add("\\r\\n");
mylist.add("\\n");
mylist.add("\\");  // add back slash

System.out.println("original:" + s);
String x = new Main().replaceMultipleSubstrings(s, mylist);
System.out.println("modified:" + x);

输出:

original:Kerner\r\n kyky\r hihi\n \"
modified:Kerner kyky hihi "

答案 1 :(得分:0)

我不知道您当前的替换逻辑是否正确,但现在说\n\r\r\n被替换为空字符串,反斜杠也会得到用空字符串替换。如果是这样,那么你可以尝试以下正则表达式替换所有:

String s = "Kerner\\r\\n kyky\\r hihi\\n \\\"";
System.out.println(s.replaceAll("\\r|\\n|\\r\\n|\\\\", ""));

我在您的尝试中看到的一个问题是您正在呼叫replace(),而不是replaceAll(),因此它只会进行一次替换,然后停止。

答案 2 :(得分:0)

可以使用

$element.ready(function(){ scope.$apply(function(){ onWindowResize(); }) }) ,在您的问题中,您尝试使用不解释正则表达式的String.replaceAll(),只使用普通替换字符串...

您还需要再次转义\\,即String.replace()而不是\\\\

\\

输出

String s = "Kerner\\r\\n kyky\\r hihi\\n \\\"";
System.out.println(s.replaceAll("\\\\r|\\\\n|\\\\\"", ""));

注意String.replaceAll()和String.replace()

之间的区别

String.replaceAll()

  

替换此字符串中与给定常规匹配的每个子字符串   表达与给定的替换。

String.replace()

  

替换此字符串中与文字目标匹配的每个子字符串   具有指定文字替换序列的序列。

答案 3 :(得分:-1)

如果您想一次性完成所有替换,请使用正则表达式。 http://www.javamex.com/tutorials/regular_expressions/search_replace.shtml