文字列に英数字以外の文字が含まれているかどうかを確認できるメソッドが必要です。
たとえば、文字列が「abcdef?」の場合 または「abcdefà」の場合、メソッドはtrueを返す必要があります。
文字列に英数字以外の文字が含まれているかどうかを確認できるメソッドが必要です。
たとえば、文字列が「abcdef?」の場合 または「abcdefà」の場合、メソッドはtrueを返す必要があります。
Apache Commons Langの使用:
!StringUtils.isAlphanumeric(String)
文字列の文字を交互に繰り返し、次の項目を確認します。
!Character.isLetterOrDigit(char)
まだ1つの問題が残っています。例の文字列「abcdefà」は文字であるため、英数字à
です。しかし、英数字以外の文字と見なしてほしいと思いますよね?!
したがって、代わりに正規表現を使用することをお勧めします。
String s = "abcdefà";
Pattern p = Pattern.compile("[^a-zA-Z0-9]");
boolean hasSpecialChar = p.matcher(s).find();
1つのアプローチは、Stringクラス自体を使用してそれを行うことです。あなたの文字列がそのようなものだとしましょう:
String s = "some text";
boolean hasNonAlpha = s.matches("^.*[^a-zA-Z0-9 ].*$");
もう1つは、Apachecommonsなどの外部ライブラリを使用することです。
String s = "some text";
boolean hasNonAlpha = !StringUtils.isAlphanumeric(s);
文字列内の各文字を調べてCharacter.isDigit(char);
、またはをチェックする必要がありますCharacter.isletter(char);
または、正規表現を使用することもできます。
この関数を使用して、文字列が英数字かどうかを確認します。
public boolean isAlphanumeric(String str)
{
char[] charArray = str.toCharArray();
for(char c:charArray)
{
if (!Character.isLetterOrDigit(c))
return false;
}
return true;
}
外部ライブラリをインポートする手間が省け、後で文字列に対してさまざまな検証チェックを実行したい場合にコードを簡単に変更できます。
Apache Commonsライブラリを使用できる場合、Commons-Langには、探していることを実行するStringUtils
というメソッドがあります。isAlphanumeric()
string.matches("^\\W*$");
あなたが望むことをするべきですが、それは空白を含みません。string.matches("^(?:\\W|\\s)*$");
空白にも一致します。
Java.langのCharacterクラスのisLetter(char c)静的メソッドを使用できます。
public boolean isAlpha(String s) {
char[] charArr = s.toCharArray();
for(char c : charArr) {
if(!Character.isLetter(c)) {
return false;
}
}
return true;
}
数字では機能しませんが、小文字と大文字の値が同じかどうかを確認できます。アルファベット以外の文字の場合は同じになります。使いやすさを向上させるために、この前に数字を確認する必要があります。