我有一个关于控制字符的问题。我必须在一个字符串中找到它们并删除它们。进行了一些研究并找到了有用的提示。
我写了这个:
output.toString().replaceAll("[\\p{Cntrl}\\p{Cc}]","")
但是有人问我,如果控制字符以字节为单位,这种方法是否可以找到控制字符。老实说,我不知道。尝试在网上看,但不知道我如何测试它。
谢谢
我有一个关于控制字符的问题。我必须在一个字符串中找到它们并删除它们。进行了一些研究并找到了有用的提示。
我写了这个:
output.toString().replaceAll("[\\p{Cntrl}\\p{Cc}]","")
但是有人问我,如果控制字符以字节为单位,这种方法是否可以找到控制字符。老实说,我不知道。尝试在网上看,但不知道我如何测试它。
谢谢
是的,字符将被删除,请参见下一个代码:
byte[] chars = { 'h', 'e', 10, 15, 21, 'l', 'l', 'o', 13 };
String str = new String(chars, "utf8");
System.out.println("==========");
System.out.println(str);
System.out.println("==========");
System.out.println(str.replaceAll("[\\p{Cntrl}\\p{Cc}]", ""));
System.out.println("==========");
该代码的输出将是:
==========
he
llo
==========
hello
==========
一旦特殊字符包含在 String 对象中,无论是从 byte[] 还是其他任何对象创建都无关紧要,它始终以相同的格式存储。
如果“以字节为单位”表示您的输入是字节数组,则可以编写
String s = new String(myByteArray)
并在 s 上使用您的代码。