列表中的通配符Java字符串
在Java中是否可以向列表中的字符串添加通配符 我有一个字符串,它有不同的结尾(例如:键(1)、键(2)、键(3)、键(4)、键(5)等等) 是否可以使用通配符将字符串添加到列表中,这样我就可以执行以下操作:列表中的通配符Java字符串,java,string,wildcard,Java,String,Wildcard,在Java中是否可以向列表中的字符串添加通配符 我有一个字符串,它有不同的结尾(例如:键(1)、键(2)、键(3)、键(4)、键(5)等等) 是否可以使用通配符将字符串添加到列表中,这样我就可以执行以下操作: list.add("Key*wildcard*"); 它会有所有不同的字符串结尾 非常感谢:-) 编辑: 这就是我将如何使用它 我正在为一个游戏编写代码,它必须检查特定的项目。此项目包含费用,该费用定义项目名称的结尾。该项目被称为“游戏项链” 现在,我想检查一下,如果用户有这个项目,如果
list.add("Key*wildcard*");
它会有所有不同的字符串结尾
非常感谢:-)
编辑:
这就是我将如何使用它
我正在为一个游戏编写代码,它必须检查特定的项目。此项目包含费用,该费用定义项目名称的结尾。该项目被称为“游戏项链”
现在,我想检查一下,如果用户有这个项目,如果没有,它会买一个。我有一个完成某项任务所需的物品列表,但游戏项链的名称发生了变化(从8-1,因此可以是“游戏项链(8)”、“游戏项链(7)”、“游戏项链(6)”和“游戏项链(1)”。我想检查用户是否拥有所需项目列表中的所有项目,但如果用户拥有项链的任何版本,则应返回true,因为字符串具有多个值(至少在Java中)是没有意义的。您可以创建一个表示“多字符串”的类(当然,根据您的具体需要更改其机械结构
class MultiString {
List<String> strings = new ArrayList<String>();
public MultiString(String, prefix, int numValues) {
for(int i = 0; i < numValues; i++) strings.add(prefix + String.valueOf(i));
}
public String get(int i) {
return strings.get(i);
}
}
List<String> list = new ArrayList<>();
for (int i= 8; i>0;i--){
list.add("Games Necklace("+i+")");
}
类多字符串{
列表字符串=新的ArrayList();
公共多字符串(字符串、前缀、int numvalue){
对于(inti=0;i
或者您可以只向列表中添加几个值
public void addStrings(List<String> list, String prefix, int numValues) {
for(int i = 0; i < numValues; i++) list.add(prefix + String.valueOf(i));
}
public void addStrings(列表、字符串前缀、int numvalue){
对于(inti=0;i
在我们了解您的确切需求之前,无法提供更具体的解决方案。List List=new ArrayList();
class MultiString {
List<String> strings = new ArrayList<String>();
public MultiString(String, prefix, int numValues) {
for(int i = 0; i < numValues; i++) strings.add(prefix + String.valueOf(i));
}
public String get(int i) {
return strings.get(i);
}
}
List<String> list = new ArrayList<>();
for (int i= 8; i>0;i--){
list.add("Games Necklace("+i+")");
}
对于(int i=8;i>0;i--){
列表。添加(“游戏项链(“+i+”));
}
您可以向列表中添加通配符字符串,但是您必须自己在列表中执行搜索,并且您不能依靠包含来为您工作,因为它只调用等于方法,而等于不能满足您的需要
以下是一个可能的解决方案:
- 不要使用列表,而是使用列表,并将该项定义为正则表达式
List<Pattern> requiredList = new List<>();
requiredList.add(Pattern.compile("Sword");
requiredList.add(Pattern.compile("Games Necklace\\(\\d+\\)");
List requiredList=新列表();
requiredList.add(Pattern.compile(“剑”);
requiredList.add(Pattern.compile(“游戏项链\(\\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;
}
publicstatichasall(需要列表,集合可用){
用于(模式pat:可用){
布尔匹配=假;
for(字符串项:需要){
if(pat.matcher(item.matches()){
匹配=真;
打破
}
}
如果(!匹配){
返回false;
}
}
返回true;
}
另一个选项是在自己的类中定义游戏项目,而不是作为字符串。该类将有一个“类型”和一个“显示名称”。您将使用类型在列表中检查它,该类型将是“游戏项链”(适用于所有项目),并使用显示名称进行显示。您需要对该列表做什么?如何使用列表中的字符串?我不明白您想在这里做什么。添加键并获取键(1),键(2)…
在列表中?也许你应该多解释一点。字符串的所有不同结尾
你如何定义所有不同的结尾
?。请注意,即使是列表
也有其可容纳的值的限制。编辑了原始帖子:-)@Jannik判断你的编辑时,我宁愿选择带有类成员变量费用的类项链
。这一方法使用OOP
原则,你不必关心字符串
的不同含义。