java - 替换java中字符串中的任何非ascii字符

标签 java regex unicode

如何在 Java 中将 -lrb-300-rrb-┬á922-6590 转换为 -lrb-300-rrb-922-6590

尝试了以下方法:

t.lemma = lemma.replaceAll("\\p{C}", " ");
t.lemma = lemma.replaceAll("[\u0000-\u001f]", " ");

我可能缺少一些概念性的东西。将不胜感激解决方案的任何指示。

谢谢

最佳答案

尝试下一个:

str = str.replaceAll("[^\\p{ASCII}]", "");

顺便说一句,\p{ASCII}都是ASCII:[\x00-\x7F]

另一方面,您需要使用Pattern 常量来避免每次都重新编译表达式。

private static final Pattern REGEX_PATTERN = 
        Pattern.compile("[^\\p{ASCII}]");

public static void main(String[] args) {
    String input = "-lrb-300-rrb- 922-6590";
    System.out.println(
        REGEX_PATTERN.matcher(input).replaceAll(" ")
    );  // prints "-lrb-300-rrb- 922-6590"
}

另见:

关于java - 替换java中字符串中的任何非ascii字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18623868/

相关文章:

java - 如何向由 arraylist 组成的 main 方法抛出异常?

java - 使用 mybatis 缓冲结果集

c# - 什么是 Java 等同于 C# 中的打印值?

正则表达式 可选组反向引用

javascript - 如何从 html 标签中删除子字符串

javascript - 正则表达式仅抓取日期

c++ - QT与Oracle之间如何处理韩文字符集

mysql - 如何让MySQL像SQLite一样处理字符串,涉及Unicode和排序规则?

java - 如何在不使用鼠标/拖动等的情况下切换到新场景。事件?

python - 具有不同编码的python3.5中的字符串长度