77

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

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

4

8 に答える 8

153

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();
于 2011-11-23T20:00:43.497 に答える
27

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);
于 2011-11-23T20:03:16.663 に答える
6

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

または、正規表現を使用することもできます。

于 2011-11-23T19:57:33.497 に答える
4

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

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

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

于 2017-10-22T14:15:15.003 に答える
2

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

于 2011-11-23T20:00:07.630 に答える
1

string.matches("^\\W*$");あなたが望むことをするべきですが、それは空白を含みません。string.matches("^(?:\\W|\\s)*$");空白にも一致します。

于 2015-07-21T20:18:00.563 に答える
0

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;
}
于 2017-07-18T21:12:19.453 に答える
0

数字では機能しませんが、小文字と大文字の値が同じかどうかを確認できます。アルファベット以外の文字の場合は同じになります。使いやすさを向上させるために、この前に数字を確認する必要があります。

于 2020-07-17T07:07:04.353 に答える