假设我有两根弦,
String s1 = "AbBaCca";
String s2 = "bac";
我想执行一个检查,返回s1
中包含的s2
。我可以使用以下命令来实现:
return s1.contains(s2);
我非常确定contains()
是区分大小写的,但是通过阅读文档,我不能确定这一点。如果是这样,那么我想我最好的方法应该是:
return s1.toLowerCase().contains(s2.toLowerCase());
抛开所有这些,有没有其他(可能更好的)方法来实现这一点,而不关心大小写敏感?
发布于 2008-09-18 07:48:30
the answer by Dave L.的一个问题是当s2包含\d
等正则表达式标记时。
您希望在s2上调用Pattern.quote():
Pattern.compile(Pattern.quote(s2), Pattern.CASE_INSENSITIVE).matcher(s1).find();
发布于 2012-03-05 08:36:51
您可以使用
org.apache.commons.lang3.StringUtils.containsIgnoreCase("AbBaCca", "bac");
对于这类事情,Apache Commons库非常有用。这个特殊的表达式可能比正则表达式更好,因为正则表达式在性能方面总是很昂贵。
发布于 2012-01-17 01:29:05
一种更简单的方法(不用担心模式匹配)是将两个String
都转换为小写:
String foobar = "fooBar";
String bar = "FOO";
if (foobar.toLowerCase().contains(bar.toLowerCase()) {
System.out.println("It's a match!");
}
https://stackoverflow.com/questions/86780
复制相似问题