如何替换字符串中的某些字符

时间:2018-11-04 03:30:06

标签: java android

  • 我有一个字符串@B1AdGODG7:Devrath%Dev\u00B6
  • 我想用\u00B6代替

我尝试过

String comments="@B1AdGODG7:Devrath%Dev\u00B6";
comments=comments.replaceAll("\u00B6","¶");
  • 输出@B1AdGODG7:Devrath%Dev\u00B6

  • 必需的输出@B1AdGODG7:Devrath%Dev¶


  • ReplaceAll不起作用
  • 如何进行所需的输出

快照:

enter image description here

3 个答案:

答案 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¶

这是我遇到的最可靠的解决方案,并且已经使用了一段时间。