@B1AdGODG7:Devrath%Dev\u00B6
\u00B6
代替¶
我尝试过
String comments="@B1AdGODG7:Devrath%Dev\u00B6";
comments=comments.replaceAll("\u00B6","¶");
输出:@B1AdGODG7:Devrath%Dev\u00B6
必需的输出:@B1AdGODG7:Devrath%Dev¶
快照:
答案 0 :(得分:2)
\u00B6
是单个字符,Unicode代码点为0xB6;写作\u00B6
与写作¶完全相同。
因此,您需要转义反斜杠:\\
。此外,反斜杠在正则表达式中很特殊,正则表达式可替换All,因此您需要再次对其进行转义-并且必须对转义进行转义:replaceAll("\\\\u00B6", "¶")
。
您还可以将Pattern.quote
用于第二级转义(正则表达式的转义):replaceAll(Pattern.quote("\\u00B6"), "¶")
。
答案 1 :(得分:0)
我从http://techidiocy.com/replace-unicode-characters-from-java-string/得到下面的例子。我认为这对你有用
public static StringBuffer removeUTFCharacters(String data){
Pattern p = Pattern.compile("\\\\u(\\p{XDigit}{4})");
Matcher m = p.matcher(data);
StringBuffer buf = new StringBuffer(data.length());
while (m.find()) {
String ch = String.valueOf((char) Integer.parseInt(m.group(1), 16));
m.appendReplacement(buf, Matcher.quoteReplacement(ch));
}
m.appendTail(buf);
return buf;
}
答案 2 :(得分:0)
我使用apache提供的StringEscapeUtils
。
您可以通过添加以下依赖项来使用它:
implementation 'org.apache.commons:commons-text:1.4'
代码示例:
String comments="@B1AdGODG7:Devrath%Dev\u00B6";
Log.d("output", StringEscapeUtils.unescapeJava(comments));
输出:
D/output: @B1AdGODG7:Devrath%Dev¶
这是我遇到的最可靠的解决方案,并且已经使用了一段时间。