Swift:字符串(String)分割之Substring优雅转换
认识Substring类型
这是⼀个全新的类型,看类名像是String的⼦类,但是⼤家千万别被误导了,Substring并不是String的⼦类,这是两个不同的类型,但是它们都继承了StringProtocol协议,因此存在⼀些共性;在开发中Substring并不常⽤(⽬前只在分割String见到),所以往往要转成String
字符串(String)分割函数
下⾯是Swift中分割函数定义
public func split(separator: Character, maxSplits: Int = default, omittingEmptySubsequences: Bool = default) -> [Substring]
从定义我们知道返回类型是[Substring],并不是[String]
参数描述
separator分割标识
swift 字符串转数组maxSplits最⼤分割次数,1=表⽰只分割2次就停⽌,2=表⽰只分割2次就停⽌,以此类推,默认值为Int.max omittingEmptySubsequences是否忽略空值,true=忽略空值, fasle=不忽略空值, 默认值为true
字符串分割⽰例
let string = "aaa/bbb/ccc/dddd"
let arraySubstrings: [Substring] = string.split(separator: "/")
在⽂章开始前就说过Substring并不常⽤,所以我们要把[Substring]转成[String]
⽅法1
var arrayStrings: [String] = []
for item in arraySubstrings {
arrayStrings.append("\(item)")
//arrayStrings.append(String(item))
}
⽅法2
var arrayStrings: [String] = []
arraySubstrings.forEach { (item) in
arrayStrings.append("\(item)")
//arrayStrings.append(String(item))
}
不管是⽅法1还是⽅法2,转换都稍显繁琐,不优雅;在Swift标准库提供compactMap⽅法来进⾏转换,相对前⾯2种⽅法更加优雅
let arrayStrings: [String] = arraySubstringspactMap { "\($0)" }
这上⾯是compactMap的简洁写法,完整语法如下
let arrayStrings: [String] = arraySubstringpactMap {
(item) -> String in
return "\(item)"
}
在实际开发中如果没有特别需要,⽤简洁写法就可以了,这样看起来代码更加优雅,容易维护。

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。