2016-01-19 108 views
2

我想替換字符串中的字符,但只替換字符的第一個字符。Swift字符串擴展替換第一個字符時不會出現

我正在使用這個字符串擴展!但它取代所有出現

extension String { 

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


} 
+1

你是什麼意思不復發?你能給個例子嗎? – Carlos

+0

http://stackoverflow.com/a/33822186/2442804 – luk2302

回答

2

您必須指定的範圍內,所以這樣一來,你可以找到只有第

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

我實現了這個函數類似於shannoga但擴展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) 
相關問題