这是【Dart 教程系列第 48 篇】,如果觉得有用的话,欢迎关注专栏。
一:问题描述
为什么要判断字符串是否为数字型字符串呢?
之所以记录这个问题,是因为项目中后台判断某一个数值为 null 时,转换为空字符串返回给前端,而前端又直接使用了 double.parse()
方法进行值类型转换,但 double.parse()
方法在对非数字型字符串解析时,会报如下图所示错误
提示未处理的异常,格式异常,无效的双精度。
所以正常来说,我们在用 double.parse()
方法前,需要先对传入的参数进行是否为数字型字符串的判断,是的话再去调用该方法。
二:解决方案
在 Dart 中,可以使用 double.tryParse()
方法判断字符串是否为数字型字符串,如果返回值等于 null ,则传入的不是数字型字符串,反之则是。
写了一个简单的判断是否为数字型字符串的方法,如下代码所示
/// 是否为数字型字符串
bool isNumberStr(String value) {
if (value == null) {
return false;
}
return double.tryParse(value) != null;
}
返回值为 true 则是数字型字符串,反之不是。
三:示例
首先,列出几个数字型字符串,控制台输出如下图所示
此外,像 double.nan、double.infinity
转换为字符串后,也属于数字型字符串。
然后,列出几个非数字型字符串,控制台输出如下图所示
最后一张截图是测试的代码,留到此处做个记录
功能很简单,但是如果线上没做非数字型字符串的判断就直接使用 double.parse()
方法,那可得小心了。
你的问题得到解决了吗?欢迎在评论区留言。
赠人玫瑰,手有余香,如果觉得文章不错,希望可以给个一键三连,感谢。
技术是一点一点积累的,大神也不是一天就可以达到的。原地不动就是退步,所以每天进步一点点。
结束语
最后,附上一句格言:"好学若饥,谦卑若愚",望共勉。