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