【问题标题】:ASCII Char remove not functioningASCII 字符删除不起作用
【发布时间】:2019-03-28 09:14:09
【问题描述】:

如果一个字符串包含任何非 ASCII 值,我需要删除它。

我已经尝试过在 jdk 1.8 及更高版本上运行良好的 replaceAll mrthod。但我想在 jdk 1.6 上部署相同的,它是否不起作用。

String Remarks2 ="hii:╘’i";

String Remarks = Remarks2.replaceAll("[^\\p{ASCII}]", "");
System.out.println("ans: "+Remarks);

jdk 1.8 中的输出:hii:i jdk 1.6 中的输出:hii:╘'i

实际结果必须是 - hii:i

【问题讨论】:

  • 请注意:“h”是一个 ASCII 字符。
  • 你的意思是删除任何非ascii值吗?
  • 您是否尝试过使用“[^\\x00-\\x7F]”而不是“[^\\p{ASCII}]”。也许“\p[ASCII}”在 1.6 中没有定义
  • @T.J.Crowder 谢谢。但我所了解的是,当您在键入字符代码时按住 ALT 时,我们可以生成 ascii 键。例如,要插入度数 (º) 符号,请在按住 ALT 的同时在数字键盘上键入 0176。当我们尝试通过 html 文本框中的输入字段存储相同内容时,有时人们也会从 excel 表中复制粘贴内容,从而导致架构发生变化。

标签: java string non-ascii-characters replaceall jdk1.6


【解决方案1】:

正如\p{ASCII} 所评论的那样,后来出现了。 由于 ASCII 是前 7 位范围:

String remarks = remarks2.replaceAll("[^\u0000-\u007F]", "");

您可以尝试首先将分解é 的文本规范化为e 和一个零宽度组合标记´

remarks2 = Normalizer.normalize(remarks2, Form.NFD);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-01-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-09-26
    • 1970-01-01
    相关资源
    最近更新 更多