4

我有一个可变长度的字符串,我只想检测这个字符串是否包含几个字符。例如:

"sadsdd$sss^dee~"

我想检测此字符串是否包含以下任何内容:$ ^ ~. 我怎样才能使用 Java 做到这一点string.matches

"sadsdd$sss^dee~".matches("[^+$+~+]");
4

3 回答 3

5

为此使用模式和匹配器:

Pattern pattern = Pattern.compile("[$~^]");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
   // contains special characters
} else {
   // doesn't contain special characters
}
于 2013-06-20T20:34:41.023 回答
1

如果你真的必须使用matches,那么试试这种方式

myString.matches(".*[$^~].*");

matches检查正则表达式是否可以完全匹配字符串,因此除了您感兴趣的部分之外,您还需要让它匹配它之前和之后的部分,这.*应该处理。

于 2013-06-20T20:34:06.193 回答
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;
}

当然不像正则表达式那么小或优雅,但它很快。

于 2013-06-20T21:15:16.607 回答