我需要从以下子字符串中清除我的字符串:
\n
\uXXXX
(X
是数字或字符)
e.g。 "OR\n\nThe Central Site Engineering\u2019s \u201cfrontend\u201d, where developers turn to"
- > "OR The Central Site Engineering frontend , where developers turn to"
我尝试使用String方法replaceAll但dnt知道如何克服\ uXXXX问题以及它没有用于\ n
String s = "\\n";
data=data.replaceAll(s," ");
这个正则表达式在java中看起来怎么样?
感谢您的帮助
答案 0 :(得分:5)
string.replaceAll("\\n", " ");
的问题是replaceAll
期望正则表达式,而正则表达式中的\
是特殊字符,例如用于创建表示数字的\d
等字符类,或者逃避正则表达式特殊字符,如+
。
因此,如果您想在Javas正则表达式中匹配\
,则需要将其转义两次:
\\
"\\\\"
。喜欢replaceAll("\\\\n"," ")
。
您还可以让正则表达式引擎为您转义并使用{/ 1}}方法
replace
现在要删除replace("\\n"," ")
我们可以使用
\uXXXX
还要记住,字符串是不可变的,因此每个replaceAll("\\\\u[0-9a-fA-F]{4}","")
调用都不会影响str.replace..
值,但它会创建新的字符串。因此,如果您想将新字符串存储在str
中,则需要使用
str
所以你的解决方案看起来像
str = str.replace(..)
答案 1 :(得分:0)
最好这两部分做到这一点我猜:
String ex = "OR\n\nThe Central Site Engineering\u2019s \u201cfrontend\u201d, where developers turn to";
String part1 = ex.replaceAll("\\\\n"," "); // The firs \\ replaces the backslah, \n replaces the n.
String part2 = part1.replaceAll("u\\d\\d\\d\\d","");
System.out.println(part2);
试试=)