gpt4 book ai didi

具有多变量和字符串arrayList的Java正则表达式

转载 作者:行者123 更新时间:2023-11-30 10:42:40 24 4
gpt4 key购买 nike

我创建了这个 Java 方法:

public String isInTheList(List<String> listOfStrings)
{
/*
* Iterates through the list, and if the list contains the input of the user,
* it will be returned.
*/
for(String string : listOfStrings)
{
if(this.answer.matches("(?i).*" + string + ".*"))
{
return string;
}
}
return null;
}

我在 while block 中使用此方法来验证用户输入。我想检查该输入是否匹配 String 的两个不同预定义 ArrayList 的串联。

输入的格式必须是这样的:

  (elementOfThefirstList + " " + elementOfTheSecondList) 

其中 StringelementOfThefirstListelementOfTheSecondList 都是各自列表中的元素。

for(int i = 0; i < firstListOfString.size(); i++)
{
if(userInput.contains(firstListOfString.get(i) + " " + userInput.isInTheList(secondListOfString)))
{
isValid = true;//condition for exit from the while block
}
}

如果用户输入是这样的,它会起作用:

elementOfThefirstList + " " + elementOfTheSecondList

但是,如果用户输入是这样的,它也可以工作:

elementOfThefirstList + " " + elementOfTheSecondList + " " + anotherElementOfTheFirstList

如何修改我的正则表达式以及我的方法,以便在两个列表中恰好有一个重复的元素连接在一起,并在它们之间留一个空格?

我尝试了另一个正则表达式,我想我会使用这个:“{1}”。但是,我无法使用变量来做到这一点。

最佳答案

根据您提供的有关如何解决此问题的信息,关于如何解决它几乎没有什么可说的。我强烈建议您查看 this继续之前的量词教程。

让我们看看一些解决方案。

  1. 例如,让我们看一下这一行:
    if(this.answer.matches("(?i).*" + string + ".*"))
    你要做的是看看this.answer包含 string , 忽略大小写(我怀疑你需要最后一个 .*)。但是您正在使用 Greedy Quantifier 来比较它们。如果问题是由于此比较中的输入错误引起的,我会考虑查看 Reluctant Quantifiers 的链接教程。
  2. 好的,所以这不是量词问题。另一个可能的修复方法可能是这段代码: for(int i = 0; i < firstListOfString.size(); i++)
    {
    if(userInput.contains(firstListOfString.get(i) + " " + userInput.isInTheList(secondListOfString)))
    {
    isValid = true;//condition for exit from the while block
    }
    }

    我不知道你有userInput拥有 contains方法,但我假设您使用包容来调用 String方法。如果是这种情况,可能会有解决问题的办法。您只需声明当且仅当它等于第一个列表中的元素和第二个字符串中的匹配元素时才有效。
  3. 我为您提供的最终解决方案很简单。 如果列表元素中没有其他空格,您可以 split串联 String在空格上并检查结果数组包含多少个元素。如果它大于 2,那么您的串联无效。

希望这对您有所帮助!

关于具有多变量和字符串arrayList的Java正则表达式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38022110/

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