Dart 里的 String是不可变对象;要检测两个 String 的内容是否一样时,我们使用 == 进行比较;如果要测试两个对象是否是同一个对象(indentity test),使用 identical 函数。
示例
void _stringDeals() {
var abc = ' abc ';
///带空格
var abcUp = abc.toUpperCase();
///字符大写
var abcTrim = abc.trim();
///去掉空格
///assert 是语言内置的断言函数,仅在检查模式下有效,如果断言失败则程序立刻终止
///判断内容是否相等
assert(abc == abcUp);
///判断对象是否相等
assert(!identical(abc, abcUp));
}
关键语句
Dart 里所有的东西都是对象,包括 int、函数。
判空问题
场景一
用String Api 的 length 函数 去判断
var value = "1234567";
if (value.length != 0) {
print("value不为空");
}
这样会遇到一个问题就是value 如果为Null 那么Flutter就红屏了 程序结束
var value = null;
程序出错结束
非常不推荐这么取判断
场景二
那么我们用String Api的 isNotEmpty 函数 去判断
var value = "1234567";
if (value.isNotEmpty) {
print("value不为空");
}
这样我们又会碰到同样的问题就是如果value=null
var value = null;
程序抛出异常
Another exception was thrown: NoSuchMethodError:
The getter 'isNotEmpty' was called on null.
出错点后面的程序都不会继续执行
场景三
我们用String != null 去判断
var value = "1234567";
if (null !=value ) {
print("value不为空");
}
这样我们碰到value=null 或者 value有值就不会报错
这样的场景多发生在后端给返回的字符串String 是null 的情况
总结
结合实际出发 后端规范那就不需要去用!=null 来判断 ,但是不能用value.length函数来判断,这样非常有问题。保守就是使用null !=value
网友评论