全景网站如何建设,免费制作一个自己的网站吗,哪个公司的app开发,宁波品牌网站设计特点忘记是在去年还是前年的时候遇到一个需要检测所传字符串是否为数字的场景#xff0c;开始使用 NumberUtils.isNumber() 提示错误 #xff0c;没有解决问题#xff08;可能是因为依赖版本导致#xff09;#xff0c;最后使用的是StringUtils.isNumeric()#xff0c;当时关…忘记是在去年还是前年的时候遇到一个需要检测所传字符串是否为数字的场景开始使用 NumberUtils.isNumber() 提示错误 没有解决问题可能是因为依赖版本导致最后使用的是StringUtils.isNumeric()当时关于这个问题场景的Bolog也放到了草稿箱中一直保留至今才抽时间补充起来…
其实问题早已解决但是不影响我们再好好读一下 StringUtils、NumberUtils源码以便在更多场景中活学活用 触发场景基础了解StringUtils判空 isEmpty空、isNotEmpty非空判空 isBlank空、isNotBlank非空- 过滤空格过滤、去除 strip、stripToEmpty、stripStart、stripToNull、stripToEmpty 等去空 trim、trimToNull、trimToEmpty判断 是否为数字 isNumeric、isNumericSpaceNumberUtils俩数比较获取 最大值、最小值判断 字符串是否为数字、是否全为数字类型创建 createInteger、createDouble 、createLong等类型转换 toInt、toDouble、toLong等触发场景
当时所处理场景 Java、Android工具整理 - 单位换算需注意 当时调用的StringUtils是alipay封装的 基础了解
其实不论是StringUtils还是NumberUtils 都是 org.apache.commons.lang3 提供的工具类依赖引用 implementation org.apache.commons:commons-lang3:3.9
build.gradle implementation org.apache.commons:commons-lang3:3.9org.apache.commons.lang3 StringUtils
StringUtils官方文档 导入包import org.apache.commons.lang3.StringUtils; 其实在学习源码中你会发现可以很便捷的找到方法同时这些方法的一些实际使用都有标明示例
判空 isEmpty空、isNotEmpty非空
开发中isEmpty、isNotEmpty 使用非常频繁正好看看源码感觉看过后都没必要介绍了... isEmpty 判断条件以 null 或 String长度为标准 StringUtils.isEmpty(null) trueStringUtils.isEmpty() trueStringUtils.isEmpty( ) false //内部空格默认 length()1故为falseStringUtils.isEmpty(bob) falseStringUtils.isEmpty( bob ) falseisNotEmpty内部实现直接是 !isEmpty简而言之就是 只要不为null 或 String.length() 0 即为非空 StringUtils.isNotEmpty(null) falseStringUtils.isNotEmpty() falseStringUtils.isNotEmpty( ) trueStringUtils.isNotEmpty(bob) trueStringUtils.isNotEmpty( bob ) true判空 isBlank空、isNotBlank非空- 过滤空格
这俩个API好像使用的频率稍微低一些于上者的区别主要在于对 场景的定义
对应Api调用时的示例都有我们主要看一下isBlank内部实现首先它具备了isEmpty的判断条件同时也会判断是否存在空格这里判断语句应该代表着如果不为空格就返回false为空格的话也是返回true关于 isNotBlank 的实现直接调用的 !isBlank ~ 过滤、去除 strip、stripToEmpty、stripStart、stripToNull、stripToEmpty 等
在开发中有一个很常见的场景经常需要去除字符串中的空格或者某些数据~
StringUtils.strip 提供的一些方法 stripToNull、stripToEmpty
共同点都调用了strip(str, null)
当数据为空或null时有一些不同点
stripToNull 判断字符串为空时返回的值为nullstripToEmpty 判断字符串为空时返回的值为
找点不足只能去除前后空格字符串中的间的空格无法去除 strip 当需要过滤特定数据或空串时可直接使用strip方法第二个参数为需要过滤的数据
找些不足
无筛选条件下及为null 或 首尾空格都可以去除有筛选条件下优先去除筛选数据空格可能会残留如果有需要可以二次调用特意除去空格当过滤数据位于其余数据中可能会出现无法筛选的情况类似以下场景
StringUtils.strip( abcyx, xyz) // 输出 abc
StringUtils.strip( abycyx, xyz) // 输出 abyc从strip 方法可以看到stripStart、stripEnd 有兴趣的可以稍微看一下
内部一个是正序过滤一个是倒序过滤过滤场景也是一个注重头部一个注重尾部
stripStart stripEnd 去空 trim、trimToNull、trimToEmpty
其实 trim 和 strip 有些地方还是挺相同的都可以去除字符串中首位空格相比而言trim功能能独立一些strip扩展性多一些
通过 StringUtils.trim查看相关API trim当数据为null、空字符串串、仅有空格字符串根据传值返回 null、、期望值 我自己试了一下 a b c 果然是不支持去除中间空格的 StringUtils.trim()) //输出StringUtils.trim( )) //输出StringUtils.trim( abc )) //输出abcStringUtils.trim( a b c ) //输出a b c稍微注意下 StringUtils.trim(null) 正常开发中在它上一层应该是已经抛去null场景了假设遇到需要关注下以下问题
这种写法一般会导致程序奔溃应该是空指针异常 var trim StringUtils.trim(null)Log.e(tag, trim.toString())如果想在这种场景使用的话可以写个方法默认返回如下 var trim StringUtils.trim(null)if (StringUtils.isEmpty(trim)) trim Log.e(tag, trim.toString())trimToNull、trimToEmpty 当数据为null、空字符串串、仅有空格字符串时返回值有所不同
trimToNull 返回的值为nulltrimToEmpty 返回的值为
trimToNull当数据为null、空字符串串、仅有空格字符串都会返回 null trimToEmpty当数据为null、空字符串串、仅有空格字符串都会返回 判断 是否为数字 isNumeric、isNumericSpace
isNumeric
只有纯整数才会返回true其余类型均为false例如浮点型、正负数等
假设你需要判断是否为数字及整数、小数的话可以用 NumberUtils.isCreatable() isNumericSpace
通过源码可以发现是在isNumeric的基础上过滤了空串支持以下场景可以 StringUtils.isNumeric(10000).toString() //输出trueStringUtils.isNumericSpace(10 000).toString() //输出trueStringUtils.isNumericSpace(10 00 0 ).toString() //输出trueNumberUtils
NumberUtils官方文档导入包import org.apache.commons.lang3.math.NumberUtils; 有兴趣的可以直接跳 NumberUtils 类通过 CtrlF12 查看方法 俩数比较
compare 只能比较俩个数值如果涉及多数值比较可看看max、min满不满足需求 示例 NumberUtils.compare(1, 2); // -1 参数1比参数2大返回1否则返回-1通过源码可证明 参数1比参数2大返回1否则返回-1 获取 最大值、最小值
不论是最大值还是最小值都有重载方法可以传入一个数组或者是3个数值
最小值 示例 NumberUtils.min(new int[]{3, 5, 9})); // 3NumberUtils.min(3, 1, 4)); // 1最大值 示例 NumberUtils.max(new int[]{3, 5, 9}); // 9NumberUtils.max(3, 1, 4); // 4判断 字符串是否为数字、是否全为数字
isCreatable 检查字符串是否为数字
isCreatable 最新isNumber 过时方法 NumberUtils.isCreatable(3.4); // trueNumberUtils.isNumber(123); // true·isDigits 判断字符串中是否全为数字 NumberUtils.isDigits(0000000000.596); // falseNumberUtils.isDigits(0000000000596); // true类型创建 createInteger、createDouble 、createLong等
Api含义createInteger通过字符串创建IntegercreateLong通过字符串创建LongcreateFloat通过字符串创建FloatcreateDouble通过字符串创建DoublecreateNumber通过字符串创建NumbercreateBigInteger通过字符串创建BigIntegercreateBigDecimal通过字符串创建BigDecimal类型支持long、int、float、double、number等数值
As 智能提示 NumberUtils NumberUtils.createInteger(11)NumberUtils.createDouble(10)等同于 Java Integer.parseInt(11);Double.parseDouble(10);等同于 KtKt自带类型推导使用便捷 11.toInt()10.toDouble()Kt的to类型其内部源码也是封装了对应的扩展函数实现也是用的Java的parse类型实现方式 类型转换 toInt、toDouble、toLong等 以 toInt 为例
As 智能提示 如果传空串返回1否则字符串转换为Int值 NumberUtils.toInt(10,1);通过toInt源码可以发现 to类型方法都是通过Java的parse类型转换只是针对空值可设置返回默认值