Подтвердить что ты не робот

Заменить все символы не в диапазоне (Java String)

Как вы заменяете все символы в строке, которая не соответствует критериям. У меня проблемы с оператором NOT.

В частности, я пытаюсь удалить все символы, которые не являются цифрами, я пробовал это до сих пор:

String number = "703-463-9281";
String number2 = number.replaceAll("[0-9]!", ""); // produces: "703-463-9281" (no change)
String number3 = number.replaceAll("[0-9]", "");  // produces: "--" 
String number4 = number.replaceAll("![0-9]", ""); // produces: "703-463-9281" (no change)
String number6 = number.replaceAll("^[0-9]", ""); // produces: "03-463-9281"
4b9b3361

Ответ 1

Объяснить: ^ в начале символьного класса будет отрицать этот класс. Но он должен быть внутри класса для работы. Тот же символ вне класса символов является якорем для начала строки/строки.

Вместо этого вы можете попробовать:

"[^0-9]"

Ответ 2

Вот быстрый лист обмана определения символьного класса и его взаимодействие с некоторыми метасимволами регулярных выражений.

  • [aeiou] - соответствует только одному строчному гласному
  • [^aeiou] - соответствует символу, который НЕ является строчным гласным (класс отрицательных символов)
  • ^[aeiou] - соответствует строчной гласной, закрепленной в начале строки
  • [^^] - соответствует символу, который не является каретой /'^'
  • ^[^^] - соответствует символу, который не является кареткой в ​​начале строки
  • ^[^.]. - соответствует любому, кроме буквального периода, за которым следует символ "любой", в начале строки
  • [a-z] - соответствует одному символу в диапазоне от 'a' до 'z' (т.е. все строчные буквы)
  • [az-] - соответствует либо 'a', a 'z', либо '-' (буквальная тире)
  • [.*]* - соответствует непрерывной последовательности (возможно пустой) точек и звездочек
  • [aeiou]{3} - соответствует 3 последовательным строчным гласным (все не обязательно одинаковые гласные)
  • \[aeiou\] - соответствует строке "[aeiou]"

Ссылки

Связанные вопросы