我的字符串中包含\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|\\", "")
我试过了,但它没有用。
答案 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()
之间的区别替换此字符串中与给定常规匹配的每个子字符串 表达与给定的替换。
替换此字符串中与文字目标匹配的每个子字符串 具有指定文字替换序列的序列。
答案 3 :(得分:-1)
如果您想一次性完成所有替换,请使用正则表达式。 http://www.javamex.com/tutorials/regular_expressions/search_replace.shtml