Java - 从String中删除奇怪的字符

use*_*270 17 java string

如何从字符串中删除奇怪和不需要的Unicode字符(例如带问号的黑色菱形)?

更新:

请告诉我对应于"带有问号的黑色钻石"的Unicode字符串或正则表达式.

ast*_*asr 19

带问号的黑色钻石不是unicode字符 - 它是字体无法显示的占位符.如果字符串中存在的字形不在您用于显示该字符串的字体中,您将看到占位符.这被定义为U + FFFD: .它的外观取决于您使用的字体.

您可以使用java.text.normalizer删除不在"普通"ASCII字符集中的Unicode字符.

  • 奇怪的角色仍未从字符串中删除. (3认同)

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)

  • `没有Character.isStrangeAndUnWanted()` - Ruby拥有它:p (7认同)

小智 7

要从字符串中删除非拉丁语符号,请使用以下代码:

String s = "????? latin string 01234567890";
s = s.replaceAll("[^\\x00-\\x7F]", "");
Run Code Online (Sandbox Code Playgroud)

输出字符串为:"latin string 01234567890"