假设我有字符串"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"。
您可以获得该字符串的前 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)