我有一個可變長度字符串,我只是想檢測這個字符串是否包含幾個字符。例如:如何檢測一個字符串包含使用java正則表達式的幾個字符之一
"sadsdd$sss^dee~"
我要檢測這個字符串是否包含以下內容:$
^
~
。我該如何使用Java string.matches
?
"sadsdd$sss^dee~".matches("[^+$+~+]");
我有一個可變長度字符串,我只是想檢測這個字符串是否包含幾個字符。例如:如何檢測一個字符串包含使用java正則表達式的幾個字符之一
"sadsdd$sss^dee~"
我要檢測這個字符串是否包含以下內容:$
^
~
。我該如何使用Java string.matches
?
"sadsdd$sss^dee~".matches("[^+$+~+]");
如果你真的必須使用matches
然後再嘗試這種方式
myString.matches(".*[$^~].*");
matches
檢查,如果正則表達式可以完全匹配字符串,所以部分的旁邊你有興趣你也需要讓它前後匹配零件它,.*
應該處理。
使用該模式和匹配:
Pattern pattern = Pattern.compile("[$~^]");
Matcher matcher = pattern.matcher(input);
if (matcher.find()) {
// contains special characters
} else {
// doesn't contain special characters
}
如何檢測,如果一個字符串包含在另一個字符串中的幾個人物之一:
如果你想有一個快速的解決方案:
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;
}
當然不像正則表達式那麼小或優雅,但速度很快。
這看起來並不快,因爲如果字符串不包含任何字符,它需要進行m * n次迭代。這會比匹配正則表達式更好嗎(即使正則表達式是預編譯的)? – Jardo
簡答:是的!正則表達式的更多fastes。 –
你需要分別循環每個字符。 –
你的字符串是否需要包含所有'$''^''〜'字符或者一個就足夠了? – Pshemo
一個就夠了... – user2506173