【问题标题】:Find Control Characters written in bytes in Java在 Java 中查找以字节编写的控制字符
【发布时间】:2014-07-02 10:13:44
【问题描述】:

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

我写了这个:

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

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

谢谢

【问题讨论】:

标签: java string control-characters


【解决方案1】:

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

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

【讨论】:

  • 非常感谢,我放心了:)
【解决方案2】:

如果“以字节写入”是指输入是字节数组,则可以编写

String s = new String(myByteArray)

并在 s 上使用您的代码。

【讨论】:

  • 不,我的输入是字符串,但他对我说:“但它可以处理字节吗?因为控制字符是这样表示的。”但我收到的第一个输入是一个字符串。所以对我来说,我的方法必须奏效。
  • 那我不明白这个问题。什么字节?
  • 这也是我的问题-_-'...我问他想要什么,但没有更多解释。他说,您必须将字符串转换为字节( myString.getBytes(Charset.forName("UTF-8")) )然后找到控制字符。并再次转换为字符串。对我来说似乎没用......因为如果我们有一个字符串,只需使用我的正则表达式。
猜你喜欢
  • 2015-04-09
  • 2015-04-19
  • 2016-02-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-02-15
  • 1970-01-01
相关资源
最近更新 更多