gpt4 book ai didi

java - 列表中的通配符 Java 字符串

转载 作者:行者123 更新时间:2023-11-30 07:13:16 25 4
gpt4 key购买 nike

Java 中是否可以向列表中的字符串添加通配符?

我有一个字符串,它有不同的结尾(例如:Key(1)、Key(2)、Key(3)、Key(4)、Key(5) 等)

是否可以使用通配符以某种方式将字符串添加到列表中,这样我就可以执行以下操作:

list.add("Key*wildcard*");

它会有字符串的所有不同结尾吗?

非常感谢:-)

编辑:这就是我将如何使用它。

我正在为游戏编写一些代码,该游戏必须检查特定项目。该项目有费用,它定义了项目名称的结尾。该元素名为“游戏项链”。

现在,我想检查用户是否拥有该商品,如果没有,则会购买一件。我有完成某项任务所需的元素列表,但游戏项链更改了名称(从 8-1,因此它可以是“游戏项链(8)、游戏项链(7)、游戏项链(6) 及以下” 1).我想检查用户是否拥有所需元素列表中的所有元素,但如果用户拥有任何版本的项链,它应该返回 true

最佳答案

您可以向列表中添加通配符字符串,但随后您必须自己在列表中实现搜索,并且不能依赖 contains 来为您工作,因为它只是调用equals 方法,并且 equals 不会执行您需要的操作。

这是一个可能的解决方案:

  • 不使用列表,而是使用列表,并将项目定义为正则表达式。

    List<Pattern> requiredList = new List<>();
    requiredList.add(Pattern.compile("Sword");
    requiredList.add(Pattern.compile("Games Necklace\\(\\d+\\)");
  • 编写一个方法,将列表中的所有模式与另一个集合相匹配。例如

    public static hasAll( List<Pattern> required, Collection<String> available) {
    for ( Pattern pat : available ) {
    boolean matched = false;
    for ( String item : needed ) {
    if ( pat.matcher(item).matches() ) {
    matched = true;
    break;
    }
    }
    if ( ! matched ) {
    return false;
    }
    }
    return true;
    }

另一个选择是在自己的类中定义游戏项目,而不是字符串。该类将有一个“类型”和一个“显示名称”。您将使用类型(对于所有这些)在列表中检查它,并使用显示名称进行显示。

关于java - 列表中的通配符 Java 字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38823969/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com