web-dev-qa-db-ja.com

文字列にa-z文字が含まれているかどうかを確認する

プログラミングは初めてです。文字列sにa-z文字が含まれているかどうかを確認したい。私が使う:

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

しかし、これをより短いコードで行う方法はありますか?どうもありがとう

10
user2276872

正規表現を使用できます

// 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
}

これは、文字列に少なくとも1つの文字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

26
mmohab

正規表現に加えて、文字列に文字のみが含まれていないかどうかを実際に知りたい場合、 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 
_
3
Elliott Frisch

正規表現を使用します。 Pattern.matches() メソッドはこれを簡単に行うことができます。例えば:

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

多数の文字列をチェックする必要がある場合、パフォーマンスを改善するためにこのクラスを内部でコンパイルできます。

1
Dan S

これを試して

Pattern p = Pattern.compile("[a-z]");
if (p.matcher(stringToMatch).find()) {
    //...
}
0
Giru Bhai