プログラミングは初めてです。文字列sにa-z文字が含まれているかどうかを確認したい。私が使う:
if(s.contains("a") || s.contains("b") || ... {
}
しかし、これをより短いコードで行う方法はありますか?どうもありがとう
正規表現を使用できます
// 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
正規表現に加えて、文字列に文字のみが含まれていないかどうかを実際に知りたい場合、 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
_
正規表現を使用します。 Pattern.matches() メソッドはこれを簡単に行うことができます。例えば:
Pattern.matches("[a-z]", "TESTING STRING a");
多数の文字列をチェックする必要がある場合、パフォーマンスを改善するためにこのクラスを内部でコンパイルできます。
これを試して
Pattern p = Pattern.compile("[a-z]");
if (p.matcher(stringToMatch).find()) {
//...
}