如何确定字符串是否包含非字母数字字符?
2022-08-31 12:41:13
我需要一个可以告诉我字符串是否包含非字母数字字符的方法。
例如,如果字符串是“abcdef?”或“abcdefà”,则该方法必须返回 true。
我需要一个可以告诉我字符串是否包含非字母数字字符的方法。
例如,如果字符串是“abcdef?”或“abcdefà”,则该方法必须返回 true。
使用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);