如何查找字符串是否包含" ONLY" java中的特殊字符

时间:2014-06-10 10:14:28

标签: java regex special-characters

假设我将String定义为:

String splChrs      = "/-@#$%^&_-+=()" ;

String inputString = getInputString();  //gets a String from end the user

我想检查字符串“ inputString ”是否包含字符串“ splChrs ”中包含的 ONLY 特殊字符 即如果 inputString 只包含“ splChrs ”中存在的字符,我想将布尔标志设置为 true

eg:  String inputString = "#######@";  //set boolean flag=true

如果布尔标志包含“ splChrs ”中未包含的任何字母,则布尔标志设置为 false

eg:  String inputString = "######abc"; //set boolean flag=false

3 个答案:

答案 0 :(得分:2)

您可以使用:

String splChrs = "-/@#$%^&_+=()" ;
boolean found = inputString.matches("[" + splChrs + "]+");

PS:我已在splChrs变量中重新排列了您的字符,以确保连字符开始时避免转义。我还从字符串的中间删除了一个冗余的(并且有问题的)连字符,否则它将赋予字符类不同的含义(表示范围)。

感谢@AlanMoore关于字符类中字符的说明:

^如果它首先列出;如果它没有列在第一位; [任何地方;和&如果紧接着是另一个&

答案 1 :(得分:1)

试试这个,

if(inputString.matches("[" + splChrs + "]+")){

// set bool to true
}else{

// set bool to false
}

答案 2 :(得分:1)

不要发明自行车,因为所有这些任务对每个人来说都很常见。 我建议使用Apache Commons lib,它可以: http://commons.apache.org/proper/commons-lang/javadocs/api-2.6/org/apache/commons/lang/StringUtils.html#containsOnly%28java.lang.String,%20char[]%29


containsOnly

public static boolean containsOnly(String str,                                    char []有效)

Checks if the String contains only certain characters.

A null String will return false. A null valid character array will return false. An empty String (length()=0) always returns true.

 StringUtils.containsOnly(null, *)       = false
 StringUtils.containsOnly(*, null)       = false
 StringUtils.containsOnly("", *)         = true
 StringUtils.containsOnly("ab", '')      = false
 StringUtils.containsOnly("abab", 'abc') = true
 StringUtils.containsOnly("ab1", 'abc')  = false
 StringUtils.containsOnly("abz", 'abc')  = false


Parameters:
    str - the String to check, may be null
    valid - an array of valid chars, may be null 
Returns:
    true if it only contains valid chars and is non-null