Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.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 - Fatal编程技术网

Java 如何匹配数组和字符串并输出匹配数?

Java 如何匹配数组和字符串并输出匹配数?,java,arrays,Java,Arrays,比如说, 我有一个单词数组:[苹果,applet,阿盖尔,addle,car] 我还有一个不完整的字符串:“a l e” 我如何才能输出可能匹配的数量 例如,“苹果”和“Applet”可以适应“A”L,因为字母匹配和匹配在空白空间中,所以它将输出2。p> Car显然不合适,因为它不完整单词的第一个字母不是以a开头的 因为不完整单词的第四个字母不是y,所以亚皆尔也不能匹配 第五个字母的addle也是一样 编辑:这是迄今为止我的代码的内容: 编辑:谢谢大家!在每个人的帮助下我都能得到它 正则表达式就

比如说,

我有一个单词数组:[苹果,applet,阿盖尔,addle,car]

我还有一个不完整的字符串:“a l e”

我如何才能输出可能匹配的数量

例如,“苹果”和“Applet”可以适应“A”L,因为字母匹配和匹配在空白空间中,所以它将输出2。p> Car显然不合适,因为它不完整单词的第一个字母不是以a开头的

因为不完整单词的第四个字母不是y,所以亚皆尔也不能匹配

第五个字母的addle也是一样

编辑:这是迄今为止我的代码的内容:


编辑:谢谢大家!在每个人的帮助下我都能得到它

正则表达式就是为这些类型的“模式”而设计的。
public boolean equalsGuess(String maskedWord, String word){
 // compare length, take decision
 // convert to char array, iterate through it, ignore comparison for marked char
}
您可以使用通配符
表示空白,将每个未完成的单词表示为正则表达式。因此,您的示例将变成
{“a..le”,“.d.”}

然后,计算可能匹配的数量就是迭代每个模式的所有单词,如果模式匹配该单词,则增加计数:

    String[] words = {"apple", "applet", "argyle", "addle", "car"};
    String[] patterns = {"a..le", ".d."};

    int count = 0;
    for (String pattern : patterns) {
        Pattern regex = Pattern.compile(pattern);
        for (String word : words) {
            if (regex.matcher(word).matches()) count++;
        }
    }

    System.out.println(count); // prints 2
但是,如果您的数据集很大,则正则表达式可能太慢。 在这种情况下,我建议实现一个表示每个模式的方法。

Java 8解决方案:

Arrays.asList(array).stream()

    .filter(x -> x.matches("a..le.*"))

    .collect(Collectors.toList()).size()

你是否已经开始思考这个问题,或者你只是希望这样做来为你做功课?有一个强大的(有时令人困惑:)功能称为Regex。用谷歌搜索一下。有几个网站你也可以用来练习。起初我认为这种方法是有道理的,但在问题中,它说“apple”和“applet”都应该与“a_u_________________________________________,但只出现在字符串中的某个位置。但再次强调,“Car显然不适合,因为它不适合,不完整单词的第一个字母不以a开头。”这表明模式的第一个字母(和最后一个)应该与字符串的第一个(和最后一个)字母匹配。如果“apple”和“applet”如果两者都与“a_u___________________________________________________________,“Car显然不适合,因为它不适合不完整单词的第一个字母,而不是以a开头。”这表明模式的第一个字母(和最后一个)应该与字符串的第一个(和最后一个)字母匹配。