Swift String Extension替换不出现的第一个字符

时间:2016-01-19 19:30:48

标签: ios string swift

我想替换字符串中的字符,但只替换第一次出现的字符。

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

extension String {

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


} 

2 个答案:

答案 0 :(得分:3)

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

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)
}

这将找到第一次出现的字符,并将替换限制在此字符串的范围内。 希望它有所帮助

答案 1 :(得分:1)

我实现了与shannoga类似的功能,但在mutating上实现了String扩展。这样您就不需要创建新副本,只需修改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)