我正在寻找一种方法来替换Swift中的字符
例如:"This is my string"
我想将" "替换为"+",以便得到"This+is+my+string"。
我该如何实现?
String
。例如:"This is my string"
我想将" "替换为"+",以便得到"This+is+my+string"。
我该如何实现?
replacingOccurrences()
。let aString = "This is my string"
let newString = aString.replacingOccurrences(of: " ", with: "+", options: .literal, range: nil)
正如@cprcrack所指出的那样,options
和range
参数是可选的,如果您不想指定字符串比较选项或替换范围,您只需要以下内容。
let aString = "This is my string"
let newString = aString.replacingOccurrences(of: " ", with: "+")
components()
将字符串拆分为数组,然后使用join()
函数将它们与指定的分隔符重新组合在一起。let toArray = aString.components(separatedBy: " ")
let backToString = toArray.joined(separator: "+")
如果您正在寻找一种更加Swifty的解决方案,而不使用NSString的API,您可以使用以下方法。
let aString = "Some search text"
let replaced = String(aString.map {
$0 == " " ? "+" : $0
})
stringByReplacingOccurrencesOfString
函数有问题的人,你需要 import Foundation
才能使用该方法。 - Liron Yahdav您可以使用以下代码:
let s = "This is my string"
let modified = s.replace(" ", withString:"+")
如果您在代码中的任何地方添加了此扩展方法:
extension String
{
func replace(target: String, withString: String) -> String
{
return self.stringByReplacingOccurrencesOfString(target, withString: withString, options: NSStringCompareOptions.LiteralSearch, range: nil)
}
}
Swift 3:
extension String
{
func replace(target: String, withString: String) -> String
{
return self.replacingOccurrences(of: target, with: withString, options: NSString.CompareOptions.literal, range: nil)
}
}
Swift 3、Swift 4、Swift 5解决方案
let exampleString = "Example string"
//Solution suggested above in Swift 3.0
let stringToArray = exampleString.components(separatedBy: " ")
let stringFromArray = stringToArray.joined(separator: "+")
//Swiftiest solution
let swiftyString = exampleString.replacingOccurrences(of: " ", with: "+")
你测试过这个了吗:
var test = "This is my string"
let replaced = test.stringByReplacingOccurrencesOfString(" ", withString: "+", options: nil, range: nil)
var str = "This is my string"
print(str.replacingOccurrences(of: " ", with: "+"))
输出为
This+is+my+string
Swift 5.5
我正在使用这个扩展:
extension String {
func replaceCharacters(characters: String, toSeparator: String) -> String {
let characterSet = CharacterSet(charactersIn: characters)
let components = components(separatedBy: characterSet)
let result = components.joined(separator: toSeparator)
return result
}
func wipeCharacters(characters: String) -> String {
return self.replaceCharacters(characters: characters, toSeparator: "")
}
}
用法:
"<34353 43434>".replaceCharacters(characters: "< >", toSeparator:"+") // +34353+43434+
"<34353 43434>".wipeCharacters(characters: "< >") // 3435343434
Swift 4:
let abc = "Hello world"
let result = abc.replacingOccurrences(of: " ", with: "_",
options: NSString.CompareOptions.literal, range:nil)
print(result :\(result))
输出:
result : Hello_world
extension String {
mutating func replace(_ originalString:String, with newString:String) {
self = self.replacingOccurrences(of: originalString, with: newString)
}
}
使用:
var string = "foo!"
string.replace("!", with: "?")
print(string)
输出:
foo?
一个修改现有可变字符串的类别:
extension String
{
mutating func replace(originalString:String, withString newString:String)
{
let replacedString = self.stringByReplacingOccurrencesOfString(originalString, withString: newString, options: nil, range: nil)
self = replacedString
}
}
使用:
name.replace(" ", withString: "+")
基于Ramis的答案,这是一个Swift 3解决方案:
extension String {
func withReplacedCharacters(_ characters: String, by separator: String) -> String {
let characterSet = CharacterSet(charactersIn: characters)
return components(separatedBy: characterSet).joined(separator: separator)
}
}