如何使用纯Swift删除String中的空格?

时间:2015-08-28 10:52:52

标签: string swift

现在,我正在练习Swift语言。

我创建了一个StringHelper类。

它在str属性中保存一个字符串,并且通过使用方法,它返回没有空格的相同字符串。

class StringHelper {

    let str:String

    init(str:String) {
        self.str = str
    }

    func removeSpace() -> String {
        //how to code
    }
}


let myStr = StringHelper(str: "hello swift")

myStr.removeSpace()//it should print  'helloswift'

我想只使用Swift语言...而不是NSString方法,因为我只是练习使用Swift。

2 个答案:

答案 0 :(得分:7)

这是使用filter的功能方法:

Swift 1.2

let str = "  remove  spaces please "

let newstr = String(filter(Array(str), {$0 != " "}))
println(newstr)  // prints "removespacesplease"

Swift 2/3

let newstr = String(str.characters.filter {$0 != " "})
print(newstr)

我们的想法是将String分成Character个数组,然后使用filter删除所有不是空格的Character {{1}然后使用" "初始值设定项从数组中创建一个新字符串。

如果您还想删除换行符String()和标签"\n",可以使用"\t"

Swift 1.2

contains

Swift 2/3

let newstr = String(filter(Array(str), {!contains([" ", "\t", "\n"], $0)}))

答案 1 :(得分:0)

此问题的更通用版本exists here,所以这是您之后所做的实现:

func removeSpace() -> String {
    let whitespace = " "
    let replaced = String(map(whitespace.generate()) {
        $0 == " " ? "" : $0
    })
    return replaced
}

如果您更喜欢简洁:

func removeSpace() -> String {
    return String(map(" ".generate()) { $0 == " " ? "" : $0 })
}

或者,如果你正在使用 Swift 2

func removeSpace() -> String {
    let whitespace = " "
    let replaced = String(whitespace.characters.map {
        $0 == " " ? "" : $0
    })
    return replaced
}

再次,更简洁:

func removeSpace() -> String {
    return String(" ".characters.map { $0 == " " ? "" : $0 })
}