Проверка на символ ^ в строке Java - PullRequest
0 голосов
/ 07 февраля 2012

Я хочу проверить строку, чтобы увидеть, содержит ли она символ ^, и отображает ли она сообщение пользователю.

Спасибо

Pattern p = Pattern.compile("[a-z0-9 ]", Pattern.CASE_INSENSITIVE);
Matcher m = p.matcher("StringGoesHere");
boolean b = m.find();

if (b){
   System.out.println("bad");
} else {
   System.out.println("fine");
}

Ответы [ 4 ]

15 голосов
/ 07 февраля 2012

регулярное выражение может быть излишним, просто используйте String.contains()

Если вы хотите использовать регулярное выражение, используйте "\\^": \\ предоставит один \, который нарушает специальное значение ^ char.

10 голосов
/ 07 февраля 2012

Почему не просто

String str = "StringGoesHere";
if( str.indexOf('^') != -1 )
{
    System.out.println( "bad" );
}
else
{
    System.out.println("fine");
}
1 голос
/ 07 февраля 2012

На самом деле самый простой ответ: не используйте регулярное выражение, просто найдите сам символ.

Более длинный ответ: см. Подробности синтаксиса регулярного выражения в escape .

В классах charcter, ^ является особенным, только если это символ первый .Так что [a-z^] будет соответствовать любому из a-z или ^, тогда как [^a-z] соответствует всему, кроме a-z (поскольку ^ в качестве первого символа является отрицанием).

За пределами класса символов ^ соответствует началу строки, если вы не экранируете его с помощью \.А для встроенных строк Java вам нужно записать это как "\\^".

1 голос
/ 07 февраля 2012
Pattern p = Pattern.compile("\\^");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...