java 字符串是否包含字符串_在Java中,如何检查字符串是否包含子字符串(忽略大小写)?...

我也赞成RegEx解决方案。 代码会更清晰。 在我知道字符串变得很大的情况下,我会毫不犹豫地使用toLowerCase(),因为字符串是不可变的并且必须被复制。 此外,matches()解决方案可能会令人困惑,因为它将正则表达式作为参数(搜索“Need $ le”冷却有问题)。

基于上面的一些例子:

public boolean containsIgnoreCase( String haystack, String needle ) {

if(needle.equals(""))

return true;

if(haystack == null || needle == null || haystack .equals(""))

return false;

Pattern p = Pattern.compile(needle,Pattern.CASE_INSENSITIVE+Pattern.LITERAL);

Matcher m = p.matcher(haystack);

return m.find();

}

example call:

String needle = "Need$le";

String haystack = "This is a haystack that might have a need$le in it.";

if( containsIgnoreCase( haystack, needle) ) {

System.out.println( "Found " + needle + " within " + haystack + "." );

}

(注意:根据您的需要,您可能希望以不同的方式处理NULL和空字符串。我认为我的方式更接近字符串的Java规范。)

速度关键解决方案可以包括通过字符迭代干草堆字符寻找针的第一个字符。 当第一个字符匹配时(不区分大小写),开始逐个字符地迭代针,在大海捞针中查找相应的字符,如果所有字符都匹配则返回“true”。 如果遇到不匹配的字符,则通过下一个字符的haystack继续迭代,如果位置>则返回“false”。 haystack.length() - 达到了needle.length()。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值