繁体   English   中英

如何使用Java检测和替换字符串中的不可打印字符?

[英]How to detect and replace non-printable characters in a string using Java?

例如,我有一个这样的字符串:abc123 [*] xyz [#] 098 [〜] f9e

[*],[#]和[〜]代表3种不同的不可打印字符。 如何在Java中用“X”替换它们?

坦率

这个SO Q&A展示了一种在Java中测试给定字符是否可打印的方法。

您肯定知道,在Java中,您无法直接更改字符串:而是使用字符串初始化新的StringBuilder对象,更改字符串构建器对象(例如,使用setCharAt调用,其中上述方法显示该索引处的字符isn 't printable),最后在字符串构建器对象上调用toString来创建一个新的字符串对象,您可以从您的方法返回,或者指定您用来引用原始字符串等的相同标识符,具体取决于根据您的确切需求。

我不确定我是否理解你的问题。 如果你可以更好地表达它,我认为简单的正则表达式替换可能就是你需要的。

String r = s.replaceAll(REGEX, "X");

REGEX取决于您的需求:

"\\*|#|~"   : matches only '*', "#', and '~'
"[^\\d\\w]" : matches anything that is neither a digit nor a word character
"\\[.\\]"   : matches '[' followed by ANY character followed by ']'
"(?<=\\[).(?=\\])" : matches only the character surrounded by '[' and ']'

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM