如何在Java中以不区分大小写的方式检查字符串是否包含另一个字符串?
时间:2020-03-05 18:59:47 来源:igfitidea点击:
说我有两个弦,
String s1 = "AbBaCca"; String s2 = "bac";
我想执行一次检查,返回" s1"中包含" s2"。我可以这样做:
return s1.contains(s2);
我很确定contains()
是区分大小写的,但是我不能通过阅读文档确定这一点。如果是这样,我想我最好的方法将是这样的:
return s1.toLowerCase().contains(s2.toLowerCase());
除了所有这些,是否还有另一种(可能更好)的方法可以完成此任务而不关心区分大小写?
解决方案
回答
是的,包含的内容区分大小写。我们可以将java.util.regex.Pattern与CASE_INSENSITIVE标志一起使用,以区分大小写:
Pattern.compile(Pattern.quote(s2), Pattern.CASE_INSENSITIVE).matcher(s1).find();
编辑:如果s2包含正则表达式特殊字符(其中有很多),则首先引用它很重要。我已经纠正了我的答案,因为这是第一个人们会看到的答案,但是请投票支持Matt Quail的答案,因为他指出了这一点。
回答
我不确定主要问题是什么,但是是的,.contains区分大小写。
回答
Dave L.回答的一个问题是,当s2包含正则表达式标记时,例如" \ d"等。
我们想在s2上调用Pattern.quote():
Pattern.compile(Pattern.quote(s2), Pattern.CASE_INSENSITIVE).matcher(s1).find();
回答
是的,这是可以实现的:
String s1 = "abBaCca"; String s2 = "bac"; String s1Lower = s1; //s1Lower is exact same string, now convert it to lowercase, I left the s1 intact for print purposes if needed s1Lower = s1Lower.toLowerCase(); String trueStatement = "FALSE!"; if (s1Lower.contains(s2)) { //THIS statement will be TRUE trueStatement = "TRUE!" } return trueStatement;
此代码将返回字符串" TRUE!"。因为它发现角色已被收容。
回答
String x="abCd"; System.out.println(Pattern.compile("c",Pattern.CASE_INSENSITIVE).matcher(x).find());