Как обнаружить и заменить непечатаемые символы в строке с помощью Java?
-
21-09-2019 - |
Вопрос
Например, у меня есть такая строка:abc123[*]xyz[#]098[~]f9e
[*], [#] и [~] представляют собой три разных непечатаемых символа.Как я могу заменить их на «X» в Java?
Откровенный
Решение
Я не уверен, что понимаю ваши вопросы.Если вы сможете сформулировать это лучше, я думаю, что простая замена регулярного выражения может быть всем, что вам нужно.
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 ']'
Другие советы
Это ТАК вопросы и ответы показывает способ проверить в Java, можно ли напечатать данный символ.
Как вы наверняка знаете, в Java вы не можете напрямую изменить строку:скорее, ты создаешь новый Строитель строк объект, инициализированный строкой, измените объект построителя строк (например,с setCharAt
вызовы, в которых вышеупомянутый метод показывает, что символ по этому индексу не подлежит печати), и, наконец, вызовите toString
в объекте построителя строк, чтобы создать новый строковый объект, который вы можете вернуть из своего метода или присвоить тому же идентификатору, который вы использовали для ссылки на исходную строку, и т. д. и т. д., в зависимости от ваших конкретных потребностей.