字符串替换功能在android中不起作用

时间:2015-06-08 10:24:36

标签: java android

我使用以下代码替换' \'但它不起作用。

msg="\uD83D\uDE0A";
msg=msg.replace("\\", "|");

我在Google上花了很多时间。但没有找到任何解决方案。

也试过

msg="\uD83D\uDE0A";
msg=msg.replace("\", "|");

3 个答案:

答案 0 :(得分:4)

定义的msg字符串也必须使用这样的转义字符:

msg="\\uD83D\\uDE0A";
msg=msg.replace("\\", "|");

该代码将起作用,它将导致:|uD83D|uDE0A

答案 1 :(得分:0)

如果要显示unicode字符的unicode整数值,可以执行以下操作:

String.format("\\u%04X", ch);

(如果您愿意,可以使用"|"代替"\\"

您可以遍历字符串中的每个字符,并将其转换为文字字符串,如"|u####",如果这是您想要的。

答案 2 :(得分:0)

据我所知,您希望获得字符串的unicode表示。为此,您可以使用here的答案。

private static String escapeNonAscii(String str) {

  StringBuilder retStr = new StringBuilder();
  for(int i=0; i<str.length(); i++) {
    int cp = Character.codePointAt(str, i);
    int charCount = Character.charCount(cp);
    if (charCount > 1) {
      i += charCount - 1; // 2.
      if (i >= str.length()) {
        throw new IllegalArgumentException("truncated unexpectedly");
      }
    }

    if (cp < 128) {
      retStr.appendCodePoint(cp);
    } else {
      retStr.append(String.format("\\u%x", cp));
    }
  }
  return retStr.toString();
}

这将为您提供unicode值作为String,然后您可以根据需要替换它。