阅读 657

Swift5中如何判断一个字符串是否为空字符串(包含多个空格的情况)

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

"xx".isEmpty  --推荐
"xx".count == 0  --不推荐,因为需要遍历,费资源
复制代码

但isEmpty无法判断这种情况:

"   ".isEmpty  //false 
复制代码

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

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

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

extension String {
    var isBlank: Bool {
        let trimmedStr = self.trimmingCharacters(in: .whitespacesAndNewlines)
        return trimmedStr.isEmpty
    }
}

"  ".isBlank  //true
复制代码

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

1.trimmingCharacters

"xx".trimmingCharacters(...)
复制代码

顾名思义,截取字符串。

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

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

2.CharacterSet

"xx".trimmingCharacters(in: CharacterSet.xxx)
复制代码

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

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

CharacterSet.whitespacesAndNewlines--空格和换行符
CharacterSet.letters--所有英文字母的集合
...
复制代码

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

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

回正题:

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

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

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

 

广告时间:

大家如果正好想学iOS开发的话,可以来看看小弟的iOS视频教程(永久更新+售后辅导): m.cctalk.com/inst/s9vfhe…