проверить, содержит ли строка пробелы и более одного знака @ - PullRequest
2 голосов
/ 13 марта 2012

Мне нужно проверить, содержит ли строка запятые и не более одного знака @.Я использовал следующий метод, но он не работал должным образом для меня.

boolean flag = string.matches("\\s,@");

Может кто-нибудь из вас подскажет, что в нем не так?

Ответы [ 4 ]

3 голосов
/ 13 марта 2012

Попробуйте это

Pattern pattern = Pattern.compile("[,\\s]|@.*@");
Matcher m = pattern.matcher(your_string);
boolean  b = m.find();
1 голос
/ 13 марта 2012

Я бы пошел с indexOf (char), здесь не нужно регулярное выражение.

1 голос
/ 13 марта 2012

Без руководства по регулярным выражениям на моей стороне, \ s, @ ищет один символ пробела, следующий за одной запятой, за которой следует одна @.т. е. буквальная строка ", @" - единственное, что соответствует.

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

1 голос
/ 13 марта 2012

Вы можете использовать следующий цикл,

boolean isWhiteSpace = false;
boolean isDoubleOccur = false;
boolean flag = false;
for(int i =0; i<str.length; i++)
{
  if(str.charAt(i) == ' ')
        isWhiteSpace = true;
  else if(str.charAt(i) == '@'){
        if(flag == true){
            flag = false;
            isDoubleOccur = true;
        } 
       flag = true;
  }             
}

Затем вы можете использовать isWhiteSpace и isDoubleOccur для проверки.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...