例如我有一个这样的字符串:abc123 [*] xyz [#] 098 [〜] f9e
[*],[#]和[〜]代表3种不同的不可打印字符。 如何在Java中用“X”替换它们?
谢
答案 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 ']'