匹配函数在Java中不起作用
我正在用Java做一些匹配函数。我有一些像这样的绳子 停车场、预留停车场等。。 如果我像这样搜索park这个词匹配函数在Java中不起作用,java,string,Java,String,我正在用Java做一些匹配函数。我有一些像这样的绳子 停车场、预留停车场等。。 如果我像这样搜索park这个词 if(input.trim().contains ("Park")) dummies = dummies + " 1"; else dummies = dummies + " 0"; 它还打印了预留停车位的值。我不知道如何在Java中找到精确的匹配。任何帮助都将不胜感激。Contains言行一致。它测试作为输入的字符串是否在测试所针对的字符串中的某个位置。因此“batter
if(input.trim().contains ("Park"))
dummies = dummies + " 1";
else
dummies = dummies + " 0";
它还打印了预留停车位的值。我不知道如何在Java中找到精确的匹配。任何帮助都将不胜感激。Contains言行一致。它测试作为输入的字符串是否在测试所针对的字符串中的某个位置。因此
“batteryparkhorsewidow”.contains(“park”)
将返回true
您正在寻找的可能是equals方法。此方法测试字符串是否相等。因此,如果字符串是“park”,它将只返回true
,不多也不少
请注意,
等于
区分大小写。对于不区分大小写的相等检查,请使用equalsIgnoreCase
您可能需要在敏感搜索中选择大小写
将输入和匹配的字符串更改为大写/小写和
然后匹配
输入-驻车
public static void main(String[] args) {
String input = "park";
if (input.trim().toUpperCase().contains("Park".toUpperCase()))
dummies = dummies + " 1";
else
dummies = dummies + " 0";
System.out.println(dummies);
}
输出
1
1
输入-预留停车位
public static void main(String[] args) {
String input = "reserved_parking";
if (input.trim().toUpperCase().contains("Park".toUpperCase()))
dummies = dummies + " 1";
else
dummies = dummies + " 0";
System.out.println(dummies);
}
输出
1
1
这似乎是一个个案问题。在检查字符串之前,可以将其小写或大写
input.trim().toUpperCase().contains("PARK")
或者使用一些外部库,比如ApacheCommonsLang
要找到精确匹配,您需要一个正则表达式,如下所示:
private boolean isMatching(String source, String stringToSearch){
String pattern = "\\b" + stringToSearch + "\\b";
Pattern p = Pattern.compile(pattern);
Matcher m = p.matcher(source);
return m.find();
}
正则表达式中的\b选项表示“word bonduary”。因此,如果您将其作为stringToSearch中的参数传递,则它将完全匹配“Park”,但它与“reserved_parking”不匹配,返回false。您正在查找
input.trim().equals(“Park”)
?@marstran,这无法在整个字符串中搜索!!是的,我的问题是,如果我检查停车位,它会打印预约停车位also@arunabimaniyu,标题错了<“代码>包含”正在工作,但您的需求不同。@HarshitShrivastava我不理解他的问题。这就是我问的原因。为了找到精确匹配,正则表达式有点过头了,不是吗?