Swift5中如何判断一个字符串是否为空字符串

2019-11-03

转自掘金社区-Lebus

Swift中判断字串是否为空有两种方法:

1
2
"xx".isEmpty     // 推荐
"xx".count == 0 // 不推荐,因为需要遍历,费资源

但isEmpty无法判断这种情况:

1
"   ".isEmpty  // false 

这种全部是空格的字串也被判断成了非空,也就是说Swift认为" "不是空字串。

在实际开发中我们一般不希望这样。

所以可以给String加个扩展计算属性:

1
2
3
4
5
6
7
8
extension String { 
    var isBlank: Bool {
        let trimmedStr = self.trimmingCharacters(in: .whitespacesAndNewlines)
return trimmedStr.isEmpty
}
}

" ".isBlank // true

用到的两个东西解释一下:

1. trimmingCharacters

1
"xx".trimmingCharacters(...)

顾名思义,截取字符串。

把字符串中的一些东西截掉,然后扔掉

截掉哪些东西呢?–在括号里面的参数中规定

2. CharacterSet

1
"xx".trimmingCharacters(in: CharacterSet.xxx)

参数是个CharacterSet类型,顾名思义:字符集,也就是一堆字符的集合。

就是说把我们平常见到的单个字符按照一定的条件进行了分类,比如:

1
2
CharacterSet.whitespacesAndNewlines  // 空格和换行符
CharacterSet.letters // 所有英文字母的集合...

他里面有很多静态方法,上面两个就是,所以我们可以直接用CharacterSet.xx

大家可以去文档寻找更多用法: developer.apple.com/documentati…

回正题:

trimmingCharacters截掉哪些字串呢,在这里我们是要截掉所有的空格和换行。

然后再把截掉后的字串用isEmpty来判断,就可以完美的排除用户输入空格的情况了。

当然这是我自己总结的方法,如果大家还有更好的方法欢迎留言