Скажут, у меня есть следующий кодJava replaceAll терпит неудачу со знаком доллара в исходной строке
String test = "$abc<>";
test = test.replaceAll("[^A-Za-z0-9./,#-' ]", "");
тест в настоящее время «$ а».
Зачем он держит знак доллара?
Скажут, у меня есть следующий кодJava replaceAll терпит неудачу со знаком доллара в исходной строке
String test = "$abc<>";
test = test.replaceAll("[^A-Za-z0-9./,#-' ]", "");
тест в настоящее время «$ а».
Зачем он держит знак доллара?
Ваш список символов для сохранения включает #-'
, которая является диапазон от Unicode U + 0023 (#
символа) до U + 0027 (на '
символ), в том числе $
(U + 0024).
Если вы имели в виду #-'
быть истолковано как список из трех персонажей, просто избежать его:
test = test.replaceAll("[^A-Za-z0-9./,#\\-' ]", "");
или положить его в конце списка:
test = test.replaceAll("[^A-Za-z0-9./,#' -]", "");
Потому что вы должны поместить -
в качестве последнего символа в свой класс символов.
Попробуйте
test.replaceAll("[^A-Za-z0-9./,#' -]", "");
Он будет работать :)
Смотрите также In a java regex, how can I get a character class e.g. [a-z] to match a - minus sign?
и Javadoc для Pattern (Ctrl-F "Классы символов")
Примечание что в классе персонажа действует другой набор метасимволов, чем вне символа er класс. Например, регулярное выражение. теряет свое особое значение внутри класса персонажа, а выражение - становится метасимволом диапазона.
Знак доллара находится между x23 и x27. Он должен был это сообразить. О, но поскольку класс отрицается, он исключается. Который оставил бы # $% & ' – sln