我正在写一个处理名字的应用程序。我想实现的是,如果列表中的项包含“完全”相同的字符,那么应该返回true。此外,如果输入包含“精确”名称,然后在名称后面或前面加上字符,则返回true。例如,对于输入“sid”返回true,对于输入“iisede”返回true,但是“id”返回false。
我更希望使用列表实现,但这并没有达到我的要求。但是,如果我选择string.contains(…),这将非常有效。如有任何建议,将不胜感激。
public static boolean list(String input) {
List<String> list = new ArrayList<>();
list.add("Sid");
list.add("Siddu");
list.add("Kapil");
**EDIT:**
String[] inputs = input.split(" ");
// for every input item check in list
for(int = 0; i < inputs.length; i++) {
if(inputs[i].contains(list) {
return true;
}
else {
return false;
}
}
**ORIGINAL:**
if(list.contains(input)) {
return true;
}
return false;
}
5条答案
按热度按时间8oomwypt1#
如果输入是空格分隔的单词,请使用嵌套for循环检查列表中的任何元素是否包含在任何单词中。
2lpgd9682#
按以下步骤操作:
输出:
[更新]添加此更新以澄清@lainatnavi的疑问
输出:
我这么做的原因
if (input.equals(s) || input.contains(s))
我的回答是如果input.equals(s)
退货true
,控件将不进行检查input.contains(s)
这将是一个性能优势。ibps3vxo3#
您可以很容易地用流(Java8)来实现这一点。另外,如果你有大数据,你可以在它的帮助下提高性能。
i2byvkas4#
您可以将这个正则表达式[s][i][d]与这个代码boolean b3=pattern.matches(“[s][i][d]”)一起使用;
9avjhtql5#
这可能是问题所在,您没有比较列表中的每一项,您应该执行以下操作:
}