说我有两个弦,
String s1 = "AbBaCca"; String s2 = "bac";
我要执行s2包含在中的支票退回s1。我可以这样做:
return s1.contains(s2);
我很确定这contains()是区分大小写的,但是我无法通过阅读文档确定这一点。如果是这样,我想我最好的方法就是这样:
contains()
return s1.toLowerCase().contains(s2.toLowerCase());
撇开所有这些,是否还有另一种(可能更好)的方法来完成此任务而不关心区分大小写?
是的,包含的内容区分大小写。你可以将java.util.regex.Pattern与CASE_INSENSITIVE标志一起使用,以区分大小写:
java.util.regex.Pattern与CASE_INSENSITIVE
Pattern.compile(Pattern.quote(wantedStr), Pattern.CASE_INSENSITIVE).matcher(source).find();
编辑:如果s2包含正则表达式特殊字符(其中有很多),则首先引用它很重要。我已经改正了我的答案,因为这是第一个人们会看到的答案,但是请投票支持Matt Quail的答案,因为他指出了这一点。
当s2包含正则表达式标记(例如\d)时。
\d
你想在s2上调用Pattern.quote():
Pattern.quote()
Pattern.compile(Pattern.quote(s2), Pattern.CASE_INSENSITIVE).matcher(s1).find();