use*_*801 442 string ios swift
我正在寻找一种方法来替换Swift中的字符String.
例: "This is my string"
我想,以取代 with +获得: "This+is+my+string".
我怎样才能做到这一点?
Mic*_*lum 855
此答案已针对Swift 4进行了更新.如果您仍在使用Swift 1,2或3,请查看修订历史记录.
你有几个选择.您可以像@jaumard建议和使用那样做replacingOccurrences()
let aString = "This is my string"
let newString = aString.replacingOccurrences(of: " ", with: "+", options: .literal, range: nil)
Run Code Online (Sandbox Code Playgroud)
并且如下面的@cprcrack所述,options和range参数是可选的,因此如果您不想指定字符串比较选项或范围来进行替换,则只需要以下内容.
let aString = "This is my string"
let newString = aString.replacingOccurrences(of: " ", with: "+")
Run Code Online (Sandbox Code Playgroud)
或者,如果数据是这样的特定格式,您只需要替换分隔字符,您可以使用components()将字符串分解为数组,然后您可以使用该join()函数将它们与指定的分隔符一起放回.
let toArray = aString.components(separatedBy: " ")
let backToString = toArray.joined(separator: "+")
Run Code Online (Sandbox Code Playgroud)
或者,如果您正在寻找更多不使用NSString API的Swifty解决方案,您可以使用它.
let aString = "Some search text"
let replaced = String(aString.map {
$0 == " " ? "+" : $0
})
Run Code Online (Sandbox Code Playgroud)
whi*_*and 64
你可以用这个:
let s = "This is my string"
let modified = s.replace(" ", withString:"+")
Run Code Online (Sandbox Code Playgroud)
如果您在代码中的任何位置添加此扩展方法:
extension String
{
func replace(target: String, withString: String) -> String
{
return self.stringByReplacingOccurrencesOfString(target, withString: withString, options: NSStringCompareOptions.LiteralSearch, range: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
斯威夫特3:
extension String
{
func replace(target: String, withString: String) -> String
{
return self.replacingOccurrences(of: target, with: withString, options: NSString.CompareOptions.literal, range: nil)
}
}
Run Code Online (Sandbox Code Playgroud)
Ben*_*van 52
Swift 3,Swift 4解决方案
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: "+")
Run Code Online (Sandbox Code Playgroud)
Jay*_*ant 19
var str = "This is my string"
print(str.replacingOccurrences(of: " ", with: "+"))
Run Code Online (Sandbox Code Playgroud)
输出是
This+is+my+string
Run Code Online (Sandbox Code Playgroud)
jau*_*ard 18
你测试过这个:
var test = "This is my string"
let replaced = test.stringByReplacingOccurrencesOfString(" ", withString: "+", options: nil, range: nil)
Run Code Online (Sandbox Code Playgroud)
小智 13
斯威夫特4:
let abc = "Hello world"
let result = abc.replacingOccurrences(of: " ", with: "_",
options: NSString.CompareOptions.literal, range:nil)
print(result :\(result))
Run Code Online (Sandbox Code Playgroud)
输出:
result : Hello_world
Run Code Online (Sandbox Code Playgroud)
我正在使用此扩展程序:
extension String {
func replaceCharacters(characters: String, toSeparator: String) -> String {
let characterSet = NSCharacterSet(charactersInString: characters)
let components = self.componentsSeparatedByCharactersInSet(characterSet)
let result = components.joinWithSeparator("")
return result
}
func wipeCharacters(characters: String) -> String {
return self.replaceCharacters(characters, toSeparator: "")
}
}
Run Code Online (Sandbox Code Playgroud)
用法:
let token = "<34353 43434>"
token.replaceCharacters("< >", toString:"+")
Run Code Online (Sandbox Code Playgroud)
Sunkas的Swift 3解决方案:
extension String {
mutating func replace(_ originalString:String, with newString:String) {
self = self.replacingOccurrences(of: originalString, with: newString)
}
}
Run Code Online (Sandbox Code Playgroud)
使用:
var string = "foo!"
string.replace("!", with: "?")
print(string)
Run Code Online (Sandbox Code Playgroud)
输出:
foo?
Run Code Online (Sandbox Code Playgroud)
修改现有可变字符串的类别:
extension String
{
mutating func replace(originalString:String, withString newString:String)
{
let replacedString = self.stringByReplacingOccurrencesOfString(originalString, withString: newString, options: nil, range: nil)
self = replacedString
}
}
Run Code Online (Sandbox Code Playgroud)
使用:
name.replace(" ", withString: "+")
Run Code Online (Sandbox Code Playgroud)
我身上发生的事情较少,我只是想改变(一个词或一个字符)String
所以我用了Dictionary
extension String{
func replace(_ dictionary: [String: String]) -> String{
var result = String()
var i = -1
for (of , with): (String, String)in dictionary{
i += 1
if i<1{
result = self.replacingOccurrences(of: of, with: with)
}else{
result = result.replacingOccurrences(of: of, with: with)
}
}
return result
}
}
Run Code Online (Sandbox Code Playgroud)
用法
let mobile = "+1 (800) 444-9999"
let dictionary = ["+": "00", " ": "", "(": "", ")": "", "-": ""]
let mobileResult = mobile.replace(dictionary)
print(mobileResult) // 001800444999
Run Code Online (Sandbox Code Playgroud)
基于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)
}
}
Run Code Online (Sandbox Code Playgroud)
试图根据 Swift 3 命名约定提出一个合适的函数名称。
| 归档时间: |
|
| 查看次数: |
347252 次 |
| 最近记录: |