2012-03-13 196 views
2

我需要检查一个字符串是否包含空格逗号和多个@符号。我用下面的方法来做到这一点,但它对我来说工作不正常。检查字符串是否包含空格和多个@符号

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

你们中的任何人能告诉我它出了什么问题吗?

+0

'String.matches()'只有当_entire_串所提供的正则表达式匹配的工作。这意味着你需要用锚'两端。*'考虑到比赛的特点两侧。 – Alnitak 2012-03-13 11:44:49

回答

2

试试这个

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

感谢这有助于:) – user1266343 2012-03-13 23:29:23

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 2012-03-13 11:46:39

+0

订单重要吗? – Chris 2012-03-13 11:50:57

相关问题