如何检查选择的字符是否只在字符串中?

时间:2010-12-13 22:12:02

标签: java string character

检查字符串是否仅包含以下字符的最佳和最简单方法是什么:

abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789_

我想要一个像这样的伪代码的例子:

//If String contains other characters
else
//if string contains only those letters

请和谢谢:)

4 个答案:

答案 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)

使用正则表达式,如下所示:

^[a-zA-Z0-9]+$

http://regexlib.com/REDetails.aspx?regexp_id=1014

答案 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]