5

我有一个关于控制字符的问题。我必须在一个字符串中找到它们并删除它们。进行了一些研究并找到了有用的提示。

我写了这个:

output.toString().replaceAll("[\\p{Cntrl}\\p{Cc}]","")

但是有人问我,如果控制字符以字节为单位,这种方法是否可以找到控制字符。老实说,我不知道。尝试在网上看,但不知道我如何测试它。

谢谢

4

2 回答 2

3

是的,字符将被删除,请参见下一个代码:

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[] 还是其他任何对象创建都无关紧要,它始终以相同的格式存储。

于 2014-05-14T11:41:19.477 回答
0

如果“以字节为单位”表示您的输入是字节数组,则可以编写

String s = new String(myByteArray)

并在 s 上使用您的代码。

于 2014-05-14T11:30:52.777 回答