我需要一个可以告诉我字符串是否包含非字母数字字符的方法。
例如,如果字符串为“ abcdef?” 或“abcdefà”,该方法必须返回true。
我需要一个可以告诉我字符串是否包含非字母数字字符的方法。
例如,如果字符串为“ abcdef?” 或“abcdefà”,该方法必须返回true。
Answers:
使用Apache Commons Lang:
!StringUtils.isAlphanumeric(String)
另一种方法是遍历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 ].*$");
另一个是使用外部库,例如Apache commons:
String s = "some text";
boolean hasNonAlpha = !StringUtils.isAlphanumeric(s);
hasSpecialCharacters(String)
他对“特殊”的定义一样。
String.matches(...)
在Java中,检查regex是否匹配整个字符串。
boolean hasNonAlpha = ! … ^[A-Za-z0-9 ]*$
您必须遍历字符串中的每个字符并检查Character.isDigit(char);
或Character.isletter(char);
另外,您可以使用正则表达式。
尽管它不适用于数字,但是您可以检查小写和大写值是否相同;对于非字母字符,它们将是相同的;您应该在此之前检查数字以提高可用性