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

2022-09-02 05:30:41

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

更新:

请告诉我Unicode字符串或正则表达式,它对应于“带有问号的黑色钻石”。


答案 1

带有问号的黑色菱形不是 Unicode 字符,而是字体无法显示的字符的占位符。如果字符串中存在的字形不在用于显示该字符串的字体中,您将看到占位符。这被定义为 U+FFFD:。它的外观因您使用的字体而异。

可以使用 java.text.normalizer 删除不在“正常”ASCII 字符集中的 Unicode 字符。


答案 2

您可以使用String.replaceAll("[my-list-of-strange-and-unwanted-chars]","")

没有,你必须定义你想要什么。Character.isStrangeAndUnWanted()

如果要删除控制字符,可以执行

String str = "\u0000\u001f hi \n";
str = str.replaceAll("[\u0000-\u001f]", "");

打印(保留空间)。hi

编辑 如果你想知道任何16位字符的unicode,你可以做

int num = string.charAt(n);
System.out.println(num);