Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/353.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在Java中比较字符与字符数组中的值?_Java_Arrays_Char - Fatal编程技术网

在Java中比较字符与字符数组中的值?

在Java中比较字符与字符数组中的值?,java,arrays,char,Java,Arrays,Char,我有一个字符数组。我在代码中搜索几个用户输入单词的辅音模式,然后是元音模式,然后是辅音模式,即使在本例中我只有一个。是否有办法查看字符串中的字符是否与数组中的任何字符匹配。有没有更好的方法来看待这个问题?我知道我可以在if语句中列出所有的可能性,但我正在寻找一种更快的方法 char[] carray= new char[] {'t','z','r','v'}; char[] varray= new char[] {'t','z','r','v'}; String strin

我有一个字符数组。我在代码中搜索几个用户输入单词的辅音模式,然后是元音模式,然后是辅音模式,即使在本例中我只有一个。是否有办法查看字符串中的字符是否与数组中的任何字符匹配。有没有更好的方法来看待这个问题?我知道我可以在if语句中列出所有的可能性,但我正在寻找一种更快的方法


    char[] carray= new char[] {'t','z','r','v'};
     char[] varray= new char[] {'t','z','r','v'};
 String stringy = "rival"; 
`for( int n=0;n<= stringy.length-2;n++){
if(stringy.charAt(n)== "any character in carray" && stringy.charAt(n+1)=="any character in varray" && stringy.charAt(n+2)=="any char in carray" ) {
//code
}
}

因为您正在寻找一种更快的方法来搜索辅音模式,然后是元音模式,然后是辅音模式,所以请忘记数组并使用正则表达式:

if (stringy.matches(".*(?i)[^aeiou][aeiou][^aeiou].*")) {
    // string contains pattern of consonant then vowel then consonant
}
正则表达式引擎非常快,因为它们是通过为模式构建状态机来实现的。没有一种更快的执行方式来实现您想要的

编写代码也更快,因为要编写的代码要少得多

如果您有一组用户输入字符串,要查找与目标模式匹配的所有字符串,请执行以下操作:

List<String> userInputStrings;

List<String> matchingStrings = userInputStrings.stream()
    .filter(str -> str.matches(".*(?i)[^aeiou][aeiou][^aeiou].*"))
    .collect(Collectors.toList());