好的,假设我有一个像 String
这样的字符串。
let myString = "my string: hello"
我想把“:”替换为“,”���我已经做到了这一点:
let characters = map(Array(myString), {$0 == ":" ? "," : $0})
这将返回一个MapCollectionView<Array<Character>, Character>
。是否有一种简单的方法将其转换回String
?
好的,假设我有一个像 String
这样的字符串。
let myString = "my string: hello"
我想把“:”替换为“,”���我已经做到了这一点:
let characters = map(Array(myString), {$0 == ":" ? "," : $0})
这将返回一个MapCollectionView<Array<Character>, Character>
。是否有一种简单的方法将其转换回String
?
+
。let str = Array(characters).reduce("", combine: +)
println(str)
// Output: my string, hello
< p > < em >更新:另一种(可能更好的)解决方案:
var str = ""
str.extend(characters)
extend()
,可以在没有中间Array
的情况下进行字符串替换:let myString = "my string: hello" as String
var myNewString = ""
myNewString.extend(map(myString.generate(), {$0 == ":" ? "," : $0} ))
let myString = "my string: hello" as String
let myNewString = Array(myString).reduce("") { $0 + (String($1) == ":" ? "," : String($1)) }
更新
从Xcode 6.2 beta版本开始,以下内容现在可以正常工作:
let myString = "my string: hello"
let result = String(map(Array(myString)) {$0 == ":" ? "," : $0})
// Output: my string, hello
如果想要找到你想要的子字符串(也可以是单词),然后替换它们,怎么办呢:
var aString = "Replace the letter e with *"
import Foundation
while let range: Range<String.Index> = aString.rangeOfString("e") {
aString.replaceRange(range, with: "*")
}
适用于Xcode 7.0.1