web-dev-qa-db-ja.com

文字列に英数字以外の文字が含まれているかどうかを確認する方法は?

文字列に英数字以外の文字が含まれているかどうかを確認できるメソッドが必要です。

たとえば、文字列が「abcdef?」の場合または「abcdefà」の場合、メソッドはtrueを返す必要があります。

67
lugeno

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();
134
Fabian Barney

1つのアプローチは、Stringクラス自体を使用して行うことです。あなたの文字列がそのようなものだとしましょう:

String s = "some text";
boolean hasNonAlpha = s.matches("^.*[^a-zA-Z0-9 ].*$");

もう1つは、Apache commonsなどの外部ライブラリを使用することです。

String s = "some text";
boolean hasNonAlpha = !StringUtils.isAlphanumeric(s);
26
loscuropresagio

文字列の各文字を調べて、Character.isDigit(char);またはCharacter.isletter(char);を確認する必要があります

または、正規表現を使用できます。

5
Mechkov

この関数を使用して、文字列が英数字かどうかを確認します。

public boolean isAlphanumeric(String str)
{
    char[] charArray = str.toCharArray();
    for(char c:charArray)
    {
        if (!Character.isLetterOrDigit(c))
            return false;
    }
    return true;
}

外部ライブラリをインポートする必要がなくなり、後で文字列のさまざまな検証チェックを実行したい場合にコードを簡単に変更できます。

2
Dan Bray

Apache Commonsライブラリを使用できる場合、Commons-Lang StringUtilsにはisAlphanumeric()というメソッドがあり、目的の処理を実行します。

1
Shaun

string.matches("^\\W*$");は必要な処理を行う必要がありますが、空白は含まれません。 string.matches("^(?:\\W|\\s)*$");も空白と一致します。

1
nike4613

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;
}
0
Oguz