Ios Swift字符串扩展以替换不出现的第一个字符

Ios Swift字符串扩展以替换不出现的第一个字符,ios,string,swift,Ios,String,Swift,我想替换字符串中的一个字符,但只替换该字符的第一个匹配项 我正在使用这个字符串扩展名!但它正在取代所有的事件 extension String { func replace(target: String, withString: String) -> String { return self.stringByReplacingOccurrencesOfString(target, withString: withString, options: NSStr

我想替换字符串中的一个字符,但只替换该字符的第一个匹配项

我正在使用这个字符串扩展名!但它正在取代所有的事件

extension String {

    func replace(target: String, withString: String) -> String
    {
        return self.stringByReplacingOccurrencesOfString(target, withString: withString, options: NSStringCompareOptions.LiteralSearch, range: nil)
    }


} 

必须指定范围,这样才能找到第一个

var str = "Hello, playground"
var strnigToReplace = "l"
var stringToReplaceTO = "d"

if let range =  str.rangeOfString(strnigToReplace) {
    str = str.stringByReplacingOccurrencesOfString(strnigToReplace, withString: stringToReplaceTO, options: NSStringCompareOptions.LiteralSearch, range: range)
}
这将找到该字符的第一个匹配项,并将替换限制在此字符串的范围内。
希望对您有所帮助

我实现了与shannoga类似的功能,但作为
字符串的
扩展。这样,您就不需要创建新副本,只需修改
var

extension String {
    mutating func replaceFirstOccurrence(original: String, with newString: String) {
        if let range = self.rangeOfString(original) {
            replaceRange(range, with: newString)
        }
    }
}
例如:

var testString = "original"
testString.replaceFirstOccurrence("o", with: "O")
print(testString)

不复发是什么意思?你能举个例子吗?