现在,我正在练习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。
答案 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 })
}