Подтвердить что ты не робот

Как определить, имеет ли строка не алфавитно-цифровые символы?

Мне нужен метод, который может сказать мне, если строка имеет не буквенно-цифровые символы.

Например, если строка "abcdef?" или "abcdefà", метод должен возвращать true.

4b9b3361

Ответ 1

Использование Apache Commons Lang:

!StringUtils.isAlphanumeric(String)

Альтернативно итерации по строковым символам и с помощью:

!Character.isLetterOrDigit(char)

У вас еще одна проблема: Ваша строка примера "abcdefà" является буквенно-цифровой, поскольку à - это буква. Но я думаю, вы хотите, чтобы это считалось не буквенно-цифровым, верно?!

Таким образом, вы можете использовать вместо этого регулярное выражение:

String s = "abcdefà";
Pattern p = Pattern.compile("[^a-zA-Z0-9]");
boolean hasSpecialChar = p.matcher(s).find();

Ответ 2

Один из подходов состоит в том, чтобы сделать это, используя класс String. Скажем, что ваша строка такая:

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

один из них - использовать внешнюю библиотеку, такую ​​как Apocal commons:

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

Ответ 3

Вам нужно пройти каждый символ в строке и проверить Character.isDigit(char); или Character.isletter(char);

В качестве альтернативы вы можете использовать регулярное выражение.

Ответ 4

Если вы можете использовать библиотеку Apache Commons, то Commons-Lang StringUtils имеет метод под названием isAlphanumeric(), который делает то, что вы ищете.

Ответ 5

string.matches("^\\W*$"); должен делать то, что вы хотите, но не включает пробелы. string.matches("^(?:\\W|\\s)*$"); также соответствует пробелу.

Ответ 6

Вы можете использовать isLetter (char c) статический метод класса Character в Java.lang.

public boolean isAlpha(String s) {
    char[] charArr = s.toCharArray();

    for(char c : charArr) {
        if(!Character.isLetter(c)) {
            return false;
        }
    }
    return true;
}

Ответ 7

Используйте эту функцию, чтобы проверить, является ли строка буквенно-числовой:

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

Это избавляет от необходимости импортировать внешние библиотеки, и код может быть легко изменен, если вы позже захотите выполнить различные проверки проверки строк.