如何从java字符串中删除控制字符?

新手上路,请多包涵

我有一个来自 UI 的字符串,它可能包含控制字符,我想删除除 carriage returnsline feedstabs 之外的所有控制字符。

现在我可以找到两种删除所有控制字符的方法:

1-使用番石榴:

 return CharMatcher.JAVA_ISO_CONTROL.removeFrom(string);

2- 使用正则表达式:

 return string.replaceAll("\\p{Cntrl}", "");

原文由 Mahmoud Saleh 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 856
2 个回答

如果你想删除其他或控制 uni-code 类别中的所有字符,你可以这样做

System.out.println(
    "a\u0000b\u0007c\u008fd".replaceAll("\\p{Cc}", "")
); // abcd

注意: 这实际上是从字符串中删除(除其他外)’\u008f’ Unicode 字符,而不是转义形式的“%8F”字符串。

礼貌: polygenelubricants替换 Unicode 控制字符

原文由 Nidhish Krishnan 发布,翻译遵循 CC BY-SA 3.0 许可协议

一种选择是使用 CharMatcher 的组合:

 CharMatcher charsToPreserve = CharMatcher.anyOf("\r\n\t");
CharMatcher allButPreserved = charsToPreserve.negate();
CharMatcher controlCharactersToRemove = CharMatcher.JAVA_ISO_CONTROL.and(allButPreserved);

然后像以前一样使用 removeFrom 。我不知道它的效率如何,但它至少很简单。


如编辑所述, JAVA_ISO_CONTROL 现在在 Guava 中已弃用;首选 javaIsoControl() 方法。

原文由 Jon Skeet 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题