2015-08-28 28 views
2

现在,我正在练习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' 

我希望只使用雨燕的语言......不是NSString方法,因为我只是用斯威夫特练习。

+0

你可以这样使用:'return str.stringByReplacingOccurrencesOfString(“”,withString:“”)''在'//如何编写代码' –

+1

@DánielNagy'stringByReplacingOccurrencesOfString'很酷,但它是一个NSString方法。 OP希望纯粹的Swift。 – Moritz

+0

@EricD。你是对的,这在这种情况下不好 –

回答

0

A的这一更宽泛的版本质疑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 }) 
} 
7

下面是使用filter的功能的方法:

夫特1.2

let str = " remove spaces please " 

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

夫特2/3

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

的思想是将String打入的Character秒的阵列,然后用filter以除去所有Character S的不是空间" ",然后使用String()初始化创建从所述阵列的新字符串。


如果你想同时移除换行符"\n"和标签"\t",您可以使用contains

雨燕1.2

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

斯威夫特2/3

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