如何最好最简单地检查一个字符串是否只包含以下字符:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
我想要一个类似这样的伪代码示例:
//If String contains other characters
else
//if string contains only those letters
拜托了,谢谢 :)
如何最好最简单地检查一个字符串是否只包含以下字符:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
我想要一个类似这样的伪代码示例:
//If String contains other characters
else
//if string contains only those letters
拜托了,谢谢 :)
if (string.matches("^[a-zA-Z0-9_]+$")) {
// contains only listed chars
} else {
// contains other chars
}
对于这种特定的字符串类,请使用正则表达式"\w+"。
Pattern p = Pattern.compile("\\w+");
Matcher m = Pattern.matcher(str);
if(m.matches()) {}
else {};
如果要多次使用模式,则编译一次并重复使用比每次调用此方法更有效。
p
声明为静态常量。 - gertas轮到我了:
static final Pattern bad = Pattern.compile("\\W|^$");
//...
if (bad.matcher(suspect).find()) {
// String contains other characters
} else {
// string contains only those letters
}
以上搜索单个不匹配或空字符串。
根据JavaDoc Pattern 的说明:
\w A word character: [a-zA-Z_0-9]
\W A non-word character: [^\w]