以下字符将替换ASCII控制字符([\x00-\x1F\x7F]
的简写):
my_string.replaceAll("\\p{Cntrl}", "?");
以下代码将替换所有不可打印的ASCII码字符([\p{Graph}\x20]
的简写),包括重音字符:
my_string.replaceAll("[^\\p{Print}]", "?");
但是,这两种方法都不适用于Unicode字符串。有没有人有从unicode字符串中删除不可打印字符的好方法?
发布于 2011-06-01 17:56:01
my_string.replaceAll("\\p{C}", "?");
请参阅有关Unicode regex的更多信息。java.util.regexPattern
/String.replaceAll
支持它们。
发布于 2011-06-01 17:44:32
您可能对Unicode categories "Other, Control"感兴趣,也可能对"Other, Format"感兴趣(不幸的是,后者似乎同时包含不可打印和可打印字符)。
在Java正则表达式中,您可以分别使用\p{Cc}
和\p{Cf}
检查它们。
发布于 2018-04-05 15:42:15
下面是你实现目标的方法
public static String removeNonAscii(String str)
{
return str.replaceAll("[^\\x00-\\x7F]", "");
}
public static String removeNonPrintable(String str) // All Control Char
{
return str.replaceAll("[\\p{C}]", "");
}
public static String removeSomeControlChar(String str) // Some Control Char
{
return str.replaceAll("[\\p{Cntrl}\\p{Cc}\\p{Cf}\\p{Co}\\p{Cn}]", "");
}
public static String removeFullControlChar(String str)
{
return removeNonPrintable(str).replaceAll("[\\r\\n\\t]", "");
}
https://stackoverflow.com/questions/6198986
复制相似问题