2010-03-21 4 views
4

Например у меня есть строка, как это: абв123 [*] хуг [#] 098 [~] F9EКак обнаружить и заменить непечатаемые символы в строке с использованием Java?

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

Frank

+0

Возможный дубликат [быстрый способ отогнать все непечатаемые символы из Java String] (http://stackoverflow.com/questions/7161534/быстро путь-к-полоски-все-непечатаемые символы-из--а-Java-строки) – Stewart

ответ

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

This SO Q&A показывает способ проверить, в Java, является ли версия для печати данного символа.

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

 Смежные вопросы

  • Нет связанных вопросов^_^