我有一个可变长度的字符串,我只是想检测这个字符串是否包含多个字符。例如:
"sadsdd$sss^dee~"
我想检测此字符串是否包含以下任何内容:$
^
~
。我怎么能用Java string.matches
?
"sadsdd$sss^dee~".matches("[^+$+~+]");
答案 0 :(得分:5)
使用模式和匹配器:
Pattern pattern = Pattern.compile("[$~^]");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
// contains special characters
} else {
// doesn't contain special characters
}
答案 1 :(得分:1)
如果你真的必须使用matches
,那就试试这个
myString.matches(".*[$^~].*");
matches
检查正则表达式是否可以完全匹配字符串,所以除了您感兴趣的部分之外,还需要让它匹配前后的部分,.*
应该处理。
答案 2 :(得分:1)
如何检测一个字符串是否包含另一个字符串中的多个字符之一:
如果您想要快速解决方案:
public static void main(String[] args) {
System.out.println(containsChars("sadsdd$sss^dee~", "$^~"));
}
public static boolean containsChars(String str, String chars) {
for (int i = 0; i < chars.length(); i++) {
char c = chars.charAt(i);
for (int j = 0; j < str.length(); j++) {
if (c == str.charAt(j)) {
return true;
}
}
}
return false;
}
当然不像正则表达式那么小或优雅,但它很快。