2013-12-13 65 views

回答

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

您可以从Apache的StringUtils的使用containsAny():

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

如果你上的图案坚持,你可以使用方法:

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

(注意:^移动到终点,使其不被解释为群组否定指示符)。

相关问题