2012-03-13 4 views
2

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

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

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

+0

'String.matches()' работает только если _entire_ строка соответствует прилагаемое регулярному выражению. Это означает, что вам нужно привязать оба конца к '. *' Для учета символов с обеих сторон совпадений. – Alnitak

ответ

2

Попробуйте

Pattern pattern = Pattern.compile("[,\\s]|@.*@"); 
Matcher m = pattern.matcher(your_string); 
boolean b = m.find(); 
+0

Спасибо, это помогло :) – user1266343

1

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

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 проверить.

1

Я бы пошел с indexOf (char), здесь нет необходимости в regexp.

1

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

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

+0

Любой простой символ пробела, а не только «», но да. :) – Anonymoose

+0

Значит, порядок важен? – Chris

Смежные вопросы