[译]Swift中的空字符串

栏目: Swift · 发布时间: 5年前

内容简介:Swift 一个特色就是有很多的语法糖,初学可能觉得hold不住,实际用的时候倒是挺便利。基于对此的喜爱,简单转译一篇短文,Swift中

Swift 一个特色就是有很多的语法糖,初学可能觉得hold不住,实际用的时候倒是挺便利。

基于对此的喜爱,简单转译一篇短文, Empty Strings in Swift

isEmpty 属性

Swift中 String 是字符的结合,遵循 Collection 协议。因此会有 isEmpty 的属性,来判断字符串是否为空。

var isEmpty: Bool {get}

Collection.swift 的具体实现是:

public var isEmpty: Bool {
	return startIndex == endIndex
}
"Hello".isEmpty  // false
"".isEmpty       // true

不要使用 count 是否为0的方式来判断,这样会遍历整个字符串,性能差。

如何判断空白字符串

有时候的需求是判断字符串是否是空白字符串,因为设计字符编码的问题,通常不好实现。

" "        // space
"\t\r\n"   // tab, return, newline
"\u{00a0}" // Unicode non-breaking space
"\u{2002}" // Unicode en space
"\u{2003}" // Unicode em space

通常的一些做法是,trim左右的空白,然后判断是否为空,但是swift中有更好的方式,可以使用 字符的属性 , 类似这样。

func isBlank(_ string: String) -> Bool {
    for character in string {
        if !character.isWhitespace {
            return false
        }
    }
    return true
}

这样可以实现,但是更优雅的是,使用 allSatisfy 的方法。

"Hello".isBlank        // false
"   Hello   ".isBlank  // false
"".isBlank             // true
" ".isBlank            // true
"\t\r\n".isBlank       // true
"\u{00a0}".isBlank     // true
"\u{2002}".isBlank     // true
"\u{2003}".isBlank     // true

如何判断Optional的字符串

option类型字符串的判断,也可以写得很优雅。

extension Optional where Wrapped == String {
    var isBlank: Bool {
        return self?.isBlank ?? true
    }
}
var title: String? = nil
title.isBlank            // true
title = ""
title.isBlank            // true
title = "  \t  "
title.isBlank            // true
title = "Hello"
title.isBlank            // false

以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

心理学与生活

心理学与生活

[美] 理查德·格里格、菲利普·津巴多 / 王垒、王甦 等 / 人民邮电出版社 / 2003-10 / 88.00元

《心理学与生活》是美国斯坦福大学多年来使用的教材,也是在美国许多大学里推广使用的经典教材,被ETS推荐为GRE心理学专项考试的主要参考用书,还是被许多国家大学的“普通心理学”课程选用的教材。这本教科书写作流畅,通俗易懂,深入生活,把心理学理论与知识联系人们的日常生活与工作,使它同样也成为一般大众了解心理学与自己的极好读物。 作为一本包含着丰富的教育思想和独特教学方法的成熟教材,原书中所有元素......一起来看看 《心理学与生活》 这本书的介绍吧!

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

HSV CMYK 转换工具
HSV CMYK 转换工具

HSV CMYK互换工具