使用org.apache.commons.lang.StringUtils方法containsAny误区 看看你们遇到过没有
来源:互联网 发布:js循环while偶数 编辑:程序博客网 时间:2024/06/07 12:33
StringUtils这个工具类相信大家都不陌生,也都用过,我也经常使用。今天在做字符串比较时发现有个比较好玩的东西,记录下来希望能帮助自己记忆一下。
我今天主要说两个方法containsAny和contains都是进行比较字符串是否存在,API也都给出明确的实例
StringUtils.containsAny(null, *) = false StringUtils.containsAny("", *) = false StringUtils.containsAny(*, null) = false StringUtils.containsAny(*, "") = false StringUtils.containsAny("zzabyycdxx", "za") = true StringUtils.containsAny("zzabyycdxx", "by") = true StringUtils.containsAny("aba","z") = false
StringUtils.contains(null, *) = false StringUtils.contains(*, null) = false StringUtils.contains("", "") = true StringUtils.contains("abc", "") = true StringUtils.contains("abc", "a") = true StringUtils.contains("abc", "z") = false
但我今天使用的时候,第一个字符串:46838420642049,46992816225793,46992824151809,46992830762753,46992837524993
,46992842953217,47171435821057,47171629249793,46838420642049
第二个查找的字符串为46591174299905
使用containsAny大家猜猜会输出什么结果呢?
。
。
。
。
true没错就是true 握草这是怎么回事命名上面的一串ID不存在下面的查找的ID参数吗!!!!
但是使用contains结果是什么呢?
false 这回心里还是暖暖的,终于算是正确了,可是怎么回事呢?containsany怎么就不行了呢?
看了下源码了然了,大家请看
public static boolean containsAny(String str, String searchChars) { if (searchChars == null) { return false; } return containsAny(str, searchChars.toCharArray()); //这里进行了toCharArray }public static boolean containsAny(String str, char[] searchChars) { //然后挨个循环查找匹配 if (isEmpty(str) || ArrayUtils.isEmpty(searchChars)) { return false; } int csLength = str.length(); int searchLength = searchChars.length; int csLast = csLength - 1; int searchLast = searchLength - 1; for (int i = 0; i < csLength; i++) { char ch = str.charAt(i); for (int j = 0; j < searchLength; j++) { if (searchChars[j] == ch) { if (CharUtils.isHighSurrogate(ch)) { if (j == searchLast) { // missing low surrogate, fine, like String.indexOf(String) return true; } if (i < csLast && searchChars[j + 1] == str.charAt(i + 1)) { return true; } } else { // ch is in the Basic Multilingual Plane return true; } } } } return false; }
我的天哪,不看源码使用的话多可怕,我们使用数字时,一共0-9正好我查找的串的数字在上面的字符串里能够找到。。。。。。。。所以就ture ture true 了!!!!!!!!
以后我们使用数字字符串进行匹配时要使用contains方法,也许就根本不是个知识点,我拿出来就当是提示一下自己吧,要多看源码哦 哦哈哈!!!!!!
0 0
- 使用org.apache.commons.lang.StringUtils方法containsAny误区 看看你们遇到过没有
- org.apache.commons.lang.StringUtils方法讲解
- org.apache.commons.lang.StringUtils
- org.apache.commons.lang.StringUtils
- org.apache.commons.lang.StringUtils
- org.apache.commons.lang.StringUtils
- org.apache.commons.lang.StringUtils
- org.apache.commons.lang.StringUtils
- org.apache.commons.lang.StringUtils
- org.apache.commons.lang.StringUtils
- Apache Commons Lang使用-StringUtils
- org.apache.commons.lang.StringUtils 的应用
- org.apache.commons.lang.StringUtils类
- org.apache.commons.lang.StringUtils类
- org/apache/commons/lang/xwork/StringUtils
- org.apache.commons.lang.StringUtils源码
- org.apache.commons.lang.StringUtils(StringUtils工具类的常用方法)
- org.apache.commons.lang.StringUtils(StringUtils工具类的常用方法)
- 通过git describe --tags 查询当前branch是从那个tag建立的
- 闭包彻底学习
- vue 数据更新 视图不刷新
- Intellij IDEA怎么像Eclipse一样对Class成员进行排序
- spark提交任务端口占用异常
- 使用org.apache.commons.lang.StringUtils方法containsAny误区 看看你们遇到过没有
- C#里partial关键字的作用(转摘)
- Java的高级编程
- import caffe ImportError: No module named caffe
- RxSwift(3.4.1)
- 灰度发布和AB test
- Hibernate映射普通属性、Hibernate中的各种类型
- Java基础——Object类的三个常用方法
- Elasticsearch5.2.2进行数据聚合测试