判断字符串是否包含a-z字符

时间:2014-06-06 16:50:21

标签: java string contains

我非常喜欢编程。我想检查字符串s是否包含a-z字符。我用:

if(s.contains("a") || s.contains("b") || ... {
}

但有没有办法在更短的代码中完成此操作?非常感谢

4 个答案:

答案 0 :(得分:26)

您可以使用正则表达式

// to emulate contains, [a-z] will fail on more than one character, 
// so you must add .* on both sides.
if (s.matches(".*[a-z].*")) { 
    // Do something
}

这将检查字符串是否包含至少一个字符a-z

检查所有字符是否都是a-z使用:

if ( ! s.matches(".*[^a-z].*") ) { 
    // Do something
}

有关java中正则表达式的更多信息

http://docs.oracle.com/javase/6/docs/api/java/util/regex/Pattern.html

答案 1 :(得分:3)

除了正则表达式,并假设您确实想知道String是否只包含字符,您可以使用Character.isLetter(char) -

boolean hasNonLetters = false;
for (char ch : s.toCharArray()) {
  if (!Character.isLetter(ch)) {
    hasNonLetters = true;
    break;
  }
}
// hasNonLetters is true only if the String contains something that isn't a letter -

来自Character.isLetter(char)的Javadoc,

  

如果Character.getType(ch)提供的常规类别类型是以下任何一种字符,则该字符被视为字母:

UPPERCASE_LETTER
LOWERCASE_LETTER
TITLECASE_LETTER
MODIFIER_LETTER
OTHER_LETTER 

答案 2 :(得分:1)

使用正则表达式。 Pattern.matches()方法可以轻松完成此操作。例如:

Pattern.matches("[a-z]", "TESTING STRING a");

如果需要检查大量字符串,可以在内部编译此类以提高性能。

答案 3 :(得分:0)

试试这个

Pattern p = Pattern.compile("[a-z]");
if (p.matcher(stringToMatch).find()) {
    //...
}
相关问题