說實話,我對模式瞭解不多,但是我需要一個讓我知道是否有其中一個或多個這些字符存在於myString
中。檢查一個字符串是否包含特定字符的模式
String myString = "thisMayContain/[email protected]";
String charactersIdontWant = "^àáâãäåçèéêëìíîïðòóôõöùúûüýÿ!&{}¿?.<>~\()";
謝謝。
說實話,我對模式瞭解不多,但是我需要一個讓我知道是否有其中一個或多個這些字符存在於myString
中。檢查一個字符串是否包含特定字符的模式
String myString = "thisMayContain/[email protected]";
String charactersIdontWant = "^àáâãäåçèéêëìíîïðòóôõöùúûüýÿ!&{}¿?.<>~\()";
謝謝。
您可以使用String.indexOf(int)
來檢查特定字符是否在您的字符串中(如果不在中,它將返回-1)。
您可以使用String.toCharArray()
來獲取您不想要的所有字符的數組,併爲每個字符迭代此數組。
可讀和簡單的代碼(雖然不是最有效的)將是:
private static boolean charsOK(String s) {
String charactersIdontWant = "^àáâãäåçèéêëìíîïðòóôõöùúûüýÿ!&{}¿?.<>~\\()";
for (char c : charactersIdontWant.toCharArray()) {
if (s.indexOf(c) != -1) return false;
}
return true;
}
public static void main(String[] args) {
String myString = "thisMayContïain/[email protected]";
String myString2 = "thisMayContain/[email protected]";
System.out.println(charsOK(myString));
System.out.println(charsOK(myString2));
}
您可以從Apache的StringUtils的使用containsAny():
boolean haveBadCharacters = StringUtils.containsAny(myString, charactersIdontWant);
如果你上的圖案堅持,你可以使用方法:
Pattern badCharactersPattern = Pattern.compile("[àáâãäåçèéêëìíîïðòóôõöùúûüýÿ!&{}¿?.<>~\()^]");
(注意:^
移動到終點,使其不被解釋爲羣組否定指示符)。
停止重新發明輪子。 Apache Commons Lang StringUtils幾年前解決了這個問題。轉到api頁面(點擊鏈接)並尋找containsAny。
是的,也許這不是最有效的方法,但它適用於我想要的。我嘗試了pvgoran的模式,但由於某些原因不工作,也許是因爲我自己的無知,也可能是出於同樣的原因,我無法將StringUtils庫導入到我的android項目中。謝謝。 –