简体   繁体   中英

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

For instance I have a string like this : abc123[*]xyz[#]098[~]f9e

[*] , [#] and [~] represents 3 different non-printable characters. How can I replace them with "X" in Java ?

Frank

This SO Q&A shows a way to test, in Java, whether a given character is printable.

As you surely know, in Java you cannot directly alter a string: rather, you make a new StringBuilder object initialized with the string, alter the string builder object (eg with setCharAt calls where the method above-mentioned shows the character at that index isn't printable), and finally call toString on the string builder object to make a new string object, which you can return from your method, or assign to the same identifier you were using to refer to the original string, etc, etc, depending on your exact needs.

I'm not sure if I understand your questions. If you can formulate it better, I think a simple regular expression replacement may be all that you need.

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

REGEX depends on what you need:

"\\*|#|~"   : 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 ']'

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

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