Как обнаружить и заменить непечатаемые символы в строке с помощью Java? - PullRequest
4 голосов
/ 21 марта 2010

Например, у меня есть такая строка: abc123 [*] xyz [#] 098 [~] f9e

[*], [#] и [~] представляют 3 разных непечатаемых символа. Как я могу заменить их на «X» в Java?

Frank

Ответы [ 2 ]

2 голосов
/ 21 марта 2010

Я не уверен, что понимаю ваши вопросы.Если вы можете сформулировать это лучше, я думаю, что простая замена регулярного выражения может быть всем, что вам нужно.

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 ']'
2 голосов
/ 21 марта 2010

В этом разделе «Вопросы и ответы» показан способ проверки на Java того, печатается ли данный символ.

Как вы наверняка знаете, в Java вы не можете напрямую изменить строку: вместо этого вы создаете новый StringBuilder объект, инициализированный строкой, изменяете объект строителя строки (например, с помощью вызовов setCharAt, где Вышеупомянутый метод показывает, что символ в этом индексе не может быть распечатан), и, наконец, вызовите toString для объекта строителя строк, чтобы создать новый строковый объект, который вы можете вернуть из своего метода или присвоить тому же идентификатору, которым вы были используется для ссылки на исходную строку и т. д., и т. д., в зависимости от ваших конкретных потребностей.

...