如何在Swift中删除字符串中的空格?

这个工作
let replaced = String(map(aString.generate()) {
    $0 == " " ? "-" : $0 })

这不是

let replaced = String(map(aString.generate()) {
    $0 == " " ? "" : $0 })

为什么?

枚举一个字符串给出一系列的字符,所以$0里面
封闭类型为Character.这编译
{ $0 == " " ? "-" : $0 }

因为在这个上下文中的“ – ”被解释为字符文字
因此与$0相同.但

{ $0 == " " ? "" : $0 }

不编译,因为“”不是字符文字(在条件表达式a?b:c中的操作数b和c
必须有相同的类型).

您可以通过将$0转换为字符串来修复它:

{ $0 == " " ? "" : String($0) }

但是现在映射返回一个字符串数组
的字符数组.所以反而
的String()构造函数,你必须加入结果:

let replaced = "".join(map(aString) { $0 == " " ? "" : String($0) })
// Swift 2 / Xcode 7:
let replaced = "".join(aString.characters.map({ $0 == " " ? "" : String($0) }))

(请注意,不需要调用generate().)

当然也可以实现同样的结果

let replaced = aString.stringByReplacingOccurrencesOfString(" ",withString: "")

相关文章

软件简介:蓝湖辅助工具,减少移动端开发中控件属性的复制和粘...
现实生活中,我们听到的声音都是时间连续的,我们称为这种信...
前言最近在B站上看到一个漂亮的仙女姐姐跳舞视频,循环看了亿...
【Android App】实战项目之仿抖音的短视频分享App(附源码和...
前言这一篇博客应该是我花时间最多的一次了,从2022年1月底至...
因为我既对接过session、cookie,也对接过JWT,今年因为工作...