如何替换字符串中出现的有限次数

Som*_*ody 0 swift

假设我有字符串"blabla[R]bla[R]blaaa[R]blabla[R]bla[R]bla"

常规replacingOccurrences替换所有出现的情况。我只想换3个。

newString = myString.replacingOccurrences(of: "[R]", with: "(X)")
Run Code Online (Sandbox Code Playgroud)

做出结果"blabla(X)bla(X)blaaa(X)blabla[R]bla[R]bla"

Leo*_*bus 6

您可以获得该字符串的前 3 个范围出现,然后可以以相反的顺序迭代范围以替换子范围:

var string = "blabla[R]bla[R]blaaa[R]blabla[R]bla[R]bla"
var ranges: [Range<String.Index>] = []
var start = string.startIndex
while start < string.endIndex, 
    let range = string.range(of: "[R]", range: start..<string.endIndex) {
    ranges.append(range)
    start = range.upperBound
    if ranges.count == 3 { break }
}

for range in ranges.reversed() {
    string.replaceSubrange(range, with:  "(X)")
}
print(string)  // blabla(X)bla(X)blaaa(X)blabla[R]bla[R]bla
Run Code Online (Sandbox Code Playgroud)