说实话,我对模式了解不多,但是我需要一个让我知道是否有其中一个或多个这些字符存在于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项目中。谢谢。 –