【发布时间】:2017-03-21 04:05:32
【问题描述】:
美国东部时间晚上 9:42 3 月 21 日:愚蠢的错误。我确保对象的原始创建命名为 .toUpperCase()。部分搜索没有找到搜索词,因为它们没有大写。编辑代码如下。谢谢大家的帮助。
我正在尝试弄清楚如何使用正则表达式来找出是否有任何字符模式与对象中的内容匹配。
例如,如果与对象关联的名称是“StackOverflow”,我希望有人搜索“ck”并使 if 语句为真。那么,为什么我的 if 语句在这里没有返回 true?
ETA:i.getName() 返回一个字符串。该程序循环遍历对象的 ArrayList 以查找名称与输入匹配的对象。
System.out.println("What name or partial name would you like to filter?");
String name = input.nextLine();
int count = 0;
for (MyObject i: testObject) {
if (i.getName().matches(".*" + name.toUpperCase() + ".*")) {
count++;
}
}
【问题讨论】:
-
为什么使用
matches而不是contains? -
您是否有理由迭代
Objects?看来您应该比较Strings。 -
@matt 抱歉,不想发布太多代码。程序正在筛选对象的 ArrayList,getName() 获取对象的字符串名称。
-
我不认为
Object有getName方法?如果你比较Strings,你的代码就可以工作,所以我认为还有其他事情发生。 -
@matt 我做得不太好。我有一个单独的类(未命名对象,但它正在创建对象)。在这个问题中命名不佳。更改为 MyObject 以避免混淆?所以我在 for:each 循环中遍历这些对象。这些对象中的每一个都有一个我定义为 getName() 的方法,它返回一个字符串。
标签: java regex variables search partial