如何在Java中以不区分大小写的方式检查一个字符串是否包含另一个字符串?

2022-08-31 04:30:35

假设我有两根弦,

String s1 = "AbBaCca";
String s2 = "bac";

我想执行包含在 中的检查返回。我可以用以下方式做到这一点:s2s1

return s1.contains(s2);

我很确定这是区分大小写的,但是我无法通过阅读文档确定这一点。如果是这样,我想我最好的方法是这样的:contains()

return s1.toLowerCase().contains(s2.toLowerCase());

撇开所有这些不谈,有没有另一种(可能更好)的方法可以在不关心区分大小写的情况下实现这一目标?


答案 1

是的,包含区分大小写。您可以将 java.util.regex.Pattern 与 CASE_INSENSITIVE 标志一起使用,以进行不区分大小写的匹配:

Pattern.compile(Pattern.quote(wantedStr), Pattern.CASE_INSENSITIVE).matcher(source).find();

编辑:如果 s2 包含正则表达式特殊字符(其中有很多),则首先引用它很重要。我已经纠正了我的答案,因为这是人们会看到的第一个答案,但是自从马特·奎尔(Matt Quail)指出这一点以来,请投票支持他的答案。


答案 2

Dave L. 回答的一个问题是,当 s2 包含正则表达式标记时,例如 等。\d

你想在 s2 上调用 Pattern.quote():

Pattern.compile(Pattern.quote(s2), Pattern.CASE_INSENSITIVE).matcher(s1).find();