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

时间:2010-03-21 02:27:05

标签: java replace character non-printable

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

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

2 个答案:

答案 0 :(得分:2)

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

您肯定知道,在Java中,您无法直接更改字符串:而是使用字符串初始化新的StringBuilder对象,更改字符串构建器对象(例如,使用setCharAt调用上面提到的方法显示该索引处的字符不可打印),最后在字符串构建器对象上调用toString以创建一个新的字符串对象,您可以从您的方法返回,或者指定给相同的标识符您根据具体需要使用引用原始字符串等等。

答案 1 :(得分:2)

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

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 ']'