一尘不染

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

java

说我有两个弦,

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

我要执行s2包含在中的支票退回s1。我可以这样做:

return s1.contains(s2);

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

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

撇开所有这些,是否还有另一种(可能更好)的方法来完成此任务而不关心区分大小写?


阅读 766

收藏
2020-02-29

共2个答案

一尘不染

是的,包含的内容区分大小写。你可以将java.util.regex.Pattern与CASE_INSENSITIVE标志一起使用,以区分大小写:

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

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

2020-02-29
一尘不染

当s2包含正则表达式标记(例如\d)时。

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

Pattern.compile(Pattern.quote(s2), Pattern.CASE_INSENSITIVE).matcher(s1).find();
2020-02-29