检查字符串是否仅包含以下字符的最佳和最简单方法是什么:
abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_
我想要一个像这样的伪代码的例子:
//If String contains other characters
else
//if string contains only those letters
请和谢谢:)
答案 0 :(得分:22)
if (string.matches("^[a-zA-Z0-9_]+$")) {
// contains only listed chars
} else {
// contains other chars
}
答案 1 :(得分:4)
对于该特定String类,请使用正则表达式“\ w +”。
Pattern p = Pattern.compile("\\w+");
Matcher m = Pattern.matcher(str);
if(m.matches()) {}
else {};
请注意,我使用Pattern对象来编译正则表达式一次,这样就不必再次编译,如果您在一个批次或循环中进行此检查,这可能会很好。根据java文档...
如果要使用多个模式 次,编译一次并重复使用 它会更有效率 每次调用此方法。
答案 2 :(得分:1)
答案 3 :(得分:1)
轮到我了:
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]