如何从字符串中删除奇怪和不需要的Unicode字符(例如带问号的黑色菱形)?
更新:
请告诉我对应于"带有问号的黑色钻石"的Unicode字符串或正则表达式.
ast*_*asr 19
带问号的黑色钻石不是unicode字符 - 它是字体无法显示的占位符.如果字符串中存在的字形不在您用于显示该字符串的字体中,您将看到占位符.这被定义为U + FFFD: .它的外观取决于您使用的字体.
您可以使用java.text.normalizer
删除不在"普通"ASCII字符集中的Unicode字符.
Pet*_*rey 16
你可以使用 String.replaceAll("[my-list-of-strange-and-unwanted-chars]","")
没有Character.isStrangeAndUnWanted()
,你必须定义你想要的.
如果要删除控制字符,可以执行此操作
String str = "\u0000\u001f hi \n";
str = str.replaceAll("[\u0000-\u001f]", "");
Run Code Online (Sandbox Code Playgroud)
打印hi
(保持空间).
编辑如果你想知道任何16位字符的unicode你可以做
int num = string.charAt(n);
System.out.println(num);
Run Code Online (Sandbox Code Playgroud)
小智 7
要从字符串中删除非拉丁语符号,请使用以下代码:
String s = "????? latin string 01234567890";
s = s.replaceAll("[^\\x00-\\x7F]", "");
Run Code Online (Sandbox Code Playgroud)
输出字符串为:"latin string 01234567890"