5

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

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

坦率

4

2 回答 2

2

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

您肯定知道,在 Java 中,您不能直接更改字符串:相反,您可以创建一个用字符串初始化的新StringBuilder对象,更改字符串构建器对象(例如,通过setCharAt调用上述方法显示该索引处的字符不是) t 可打印),最后调用toString字符串构建器对象来创建一个新的字符串对象,您可以从您的方法中返回该对象,或者分配给您用来引用原始字符串等的相同标识符,等等,具体取决于您的确切的需求。

于 2010-03-21T02:35:09.407 回答
2

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

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

正则表达式取决于您需要什么:

"\\*|#|~"   : 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 ']'
于 2010-03-21T04:10:28.077 回答