这个工作
let replaced = String(map(aString.generate()) { $0 == " " ? "-" : $0 })@H_502_2@这不是
let replaced = String(map(aString.generate()) { $0 == " " ? "" : $0 })@H_502_2@为什么?
枚举一个字符串给出一系列的字符,所以$0里面
封闭类型为Character.这编译
封闭类型为Character.这编译
{ $0 == " " ? "-" : $0 }@H_502_2@因为在这个上下文中的“ – ”被解释为字符文字
因此与$0相同.但{ $0 == " " ? "" : $0 }@H_502_2@不编译,因为“”不是字符文字(在条件表达式a?b:c中的操作数b和c
必须有相同的类型).您可以通过将$0转换为字符串来修复它:
{ $0 == " " ? "" : String($0) }@H_502_2@但是现在映射返回一个字符串数组
的字符数组.所以反而
的String()构造函数,你必须加入结果:let replaced = "".join(map(aString) { $0 == " " ? "" : String($0) }) // Swift 2 / Xcode 7: let replaced = "".join(aString.characters.map({ $0 == " " ? "" : String($0) }))@H_502_2@(请注意,不需要调用generate().)
当然也可以实现同样的结果
let replaced = aString.stringByReplacingOccurrencesOfString(" ",withString: "")@H_502_2@