Мне нужен метод, который может сказать мне, если строка имеет не буквенно-цифровые символы.
Например, если строка "abcdef?" или "abcdefà", метод должен возвращать true.
Мне нужен метод, который может сказать мне, если строка имеет не буквенно-цифровые символы.
Например, если строка "abcdef?" или "abcdefà", метод должен возвращать true.
Использование 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();
Один из подходов состоит в том, чтобы сделать это, используя класс String. Скажем, что ваша строка такая:
String s = "some text";
boolean hasNonAlpha = s.matches("^.*[^a-zA-Z0-9 ].*$");
один из них - использовать внешнюю библиотеку, такую как Apocal commons:
String s = "some text";
boolean hasNonAlpha = !StringUtils.isAlphanumeric(s);
Вам нужно пройти каждый символ в строке и проверить Character.isDigit(char);
или Character.isletter(char);
В качестве альтернативы вы можете использовать регулярное выражение.
Если вы можете использовать библиотеку Apache Commons, то Commons-Lang StringUtils
имеет метод под названием isAlphanumeric()
, который делает то, что вы ищете.
string.matches("^\\W*$");
должен делать то, что вы хотите, но не включает пробелы. string.matches("^(?:\\W|\\s)*$");
также соответствует пробелу.
Вы можете использовать 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;
}
Используйте эту функцию, чтобы проверить, является ли строка буквенно-числовой:
public boolean isAlphanumeric(String str)
{
char[] charArray = str.toCharArray();
for(char c:charArray)
{
if (!Character.isLetterOrDigit(c))
return false;
}
return true;
}
Это избавляет от необходимости импортировать внешние библиотеки, и код может быть легко изменен, если вы позже захотите выполнить различные проверки проверки строк.