【问题标题】:Eliminating Unicode Characters and Escape Characters from String从字符串中消除 Unicode 字符和转义字符
【发布时间】:2013-12-19 09:53:16
【问题描述】:

我想删除所有 Unicode 字符和转义字符,如 (\n, \t) 等。简而言之,我只想要字母数字字符串。

例如:

\u2029My Actual String\u2029 \nMy Actual String\n

我只想获取'My Actual String'。有没有办法做到这一点,无论是使用内置的字符串方法还是正则表达式?

【问题讨论】:

  • 这是 5 分钟前问的,几率是多少 ;) stackoverflow.com/questions/20678238/…
  • 那只是'/n'但我想要Unicode和转义字符实际上我已经完成了但是在java中'/'被'//'替换了这就是为什么我的RE或函数不是工作。
  • 要从字符串中删除所有 Unicode 字符,您只需从字符串中删除 everything 即可。就这么简单。

标签: java unicode


【解决方案1】:

试试

String  stg = "\u2029My Actual String\u2029 \nMy Actual String";
Pattern pat = Pattern.compile("(?!(\\\\(u|U)\\w{4}|\\s))(\\w)+");
Matcher mat = pat.matcher(stg);
String out  =  "";
while(mat.find()){
    out+=mat.group()+" ";   
}
System.out.println(out);

正则表达式匹配除 unicode 和转义字符之外的所有内容。正则表达式图形表示为:

输出

My Actual String My Actual String

【讨论】:

  • '\n' 或 '\t' 如何在这个流程中运行?
  • \s 代表“空白字符”。同样,这实际上包括哪些字符,取决于正则表达式的风格。 [ \t\r\n\f]。即:\s 匹配空格、制表符、换行符或换页符。
  • 如果我只想从字符串的开头删除所有这些字符,例如 \u2029 \\t\\t&*^ my Actual String ==> my Actual String 怎么办?跨度>
【解决方案2】:

试试这个:

anyString = anyString.replaceAll("\\\\u\\d{4}|\\\\.", "");

删除转义字符。如果您还想删除所有其他特殊字符,请使用这个:

anyString = anyString.replaceAll("\\\\u\\d{4}|\\\\.|[^a-zA-Z0-9\\s]", "");

(我猜你想保留空格,如果不从上面删除\\s

【讨论】:

  • 其实我也写过 RE 但它没有替换 unicode 字符,因为在 Java 中 '\' 被替换为 '\\'。
猜你喜欢
  • 2017-11-28
  • 1970-01-01
  • 2012-03-03
  • 2014-09-17
  • 1970-01-01
  • 1970-01-01
  • 2015-10-16
  • 1970-01-01
相关资源
最近更新 更多