2013-12-13 6 views
0

Честно говоря, я не очень разбираюсь в шаблонах, но мне нужно, чтобы я мог знать, есть ли один из этих и только этих символов в myString.Шаблон, чтобы проверить, содержит ли строка определенные символы

String myString = "thisMayContain/[email protected]"; 
String charactersIdontWant = "^àáâãäåçèéêëìíîïðòóôõöùúûüýÿ!&{}¿?.<>~\()"; 

спасибо.

ответ

0

Вы можете использовать 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)); 
} 
+0

Да, возможно, это не самый эффективный способ сделать это, но он отлично подходит для того, что я хочу. Я попробовал шаблон pvgoran, но не работает по некоторым причинам, может быть, потому, что мое собственное невежество, а также, возможно, по той же причине, я не мог импортировать библиотеку StringUtils в свой проект Android. Благодарю. –

4

Вы можете использовать containsAny() из StringUtils в Apache:

boolean haveBadCharacters = StringUtils.containsAny(myString, charactersIdontWant); 

Если вы настаиваете на шаблоне, вы можете Применение:

Pattern badCharactersPattern = Pattern.compile("[àáâãäåçèéêëìíîïðòóôõöùúûüýÿ!&{}¿?.<>~\()^]"); 

(Обратите внимание, что ^ перемещается к концу, так что не интерпретируется как индикатор группового отрицания.)

1

Остановить изобретать колесо. Apache Commons Lang StringUtils решил эту проблему много лет назад. Перейдите на страницу api (перейдите по ссылке) и найдите containsAny.

Смежные вопросы