Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将具有特殊unicode的文本转换为普通文本(java)_Java_Regex_Unicode - Fatal编程技术网

将具有特殊unicode的文本转换为普通文本(java)

将具有特殊unicode的文本转换为普通文本(java),java,regex,unicode,Java,Regex,Unicode,我有一个包含许多unicode(?)字符的文本,如下所示: 帕塞克0.02亿美元新泽西州 应该是:帕塞克,新泽西州 阿尔伯特W$002E\u巴尼 应该是:阿尔伯特w。巴尼 罗斯福高中0028Yonkers 002C纽约0029美元 应该是:罗斯福高中(扬克斯,纽约) 我在网上搜索了一下,发现有一大串这样的人物: 你知道有什么快速的方法可以用它们的原始字符替换这些字符吗?请注意,我不想一个接一个地替换这些字符(比如使用replaceAll)。相反,我想使用一个已经实现了这个功能的函数(可能是一个外

我有一个包含许多unicode(?)字符的文本,如下所示:

帕塞克0.02亿美元新泽西州 应该是:帕塞克,新泽西州

阿尔伯特W$002E\u巴尼 应该是:阿尔伯特w。巴尼

罗斯福高中0028Yonkers 002C纽约0029美元 应该是:罗斯福高中(扬克斯,纽约)

我在网上搜索了一下,发现有一大串这样的人物:


你知道有什么快速的方法可以用它们的原始字符替换这些字符吗?请注意,我不想一个接一个地替换这些字符(比如使用replaceAll)。相反,我想使用一个已经实现了这个功能的函数(可能是一个外部库)

试试java的native2ascii工具。参考

假设这些是UTF-16BE编码值,您可以使用解析值并转换为字符:

  public static String parse(CharSequence csq) {
    StringBuilder out = new StringBuilder();
    Matcher matcher = Pattern.compile("\\$(\\p{XDigit}{4}+)").matcher(csq);
    int last = 0;
    while (matcher.find()) {
      out.append(csq.subSequence(last, matcher.start()));
      String hex = matcher.group(1);
      char ch = (char) Integer.parseInt(hex, 16);
      out.append(ch);
      last = matcher.end();
    }
    out.append(csq.subSequence(last, csq.length()));
    return out.toString();
  }