如何在java中从字符串中删除非ascii字符(altcode)

vhipe2zx  于 2021-07-03  发布在  Java
关注(0)|答案(1)|浏览(479)

这个问题在这里已经有答案了

替换字符串中的非ascii字符(8个答案)
上个月关门了。
如何从字符串中删除非ascii字符(altcodes),例如:→ ← █ ◄ ► ∙

ih99xse1

ih99xse11#

从您的注解中,通过“altcode”,您指的是任何非ascii字符。
解决这个问题的方法之一就是使用这种方法 String.replaceAll(String regex, String replacement) . 此方法用给定的替换字符串替换给定正则表达式(regex)的所有示例。
将此字符串中与给定正则表达式匹配的每个子字符串替换为给定的替换。
java有“\p{ascii}”模式,它只匹配ascii字符。这可以使用“[^…]”语法来匹配任何非ascii字符。然后可以用空字符串替换匹配的字符,从而有效地将它们从结果字符串中删除。

String s = "A→←B█◄C►";
String stripped = s.replaceAll("[^\\p{ASCII}]", "");
System.out.println(stripped); // Prints "ABC"

有效regex模式字符的完整列表记录在 Pattern 班级。
注意:如果要在一次运行中多次调用此模式,则使用编译的 Pattern 直接,而不是 String.replaceAll . 这样,模式只编译一次并重用,而不是每次都编译 replaceAll 称为:

public class AsciiStripper {
    private static final Pattern NON_ASCII_PATTERN = Pattern.compile("[^\\p{ASCII}]");

    public String stripAscii(String s) {
        return NON_ASCII_PATTERN.matcher(s).replaceAll("");
    }
}

相关问题