如何在不使用 reverse() 函数的情况下反转字符串,希望逐字反转而不是从 swift 中的最后一个索引到第一个索引
How to reverse a string without using reverse() function, wanting the reverse to be word by word not from last index to the first index in swift
let word = "String to be reverse"
var reversed = ""
for char in word.characters {
reversed.insert(char, at: reversed.startIndex)
}
print(reversed)
这个 returns : "esrever eb ot gnirtS"
我想做的是这样 "ngirtS ot eb esrever"
您可以使用选项 .byWords
在范围内使用 enumerateSubstrings,获取所有子字符串范围并将它们替换为反向相同范围的子字符串:
let string = "String to be reverse"
var ranges: [Range<String.Index>] = []
string.enumerateSubstrings(in: string.startIndex..., options: .byWords) { _, range, _, _ in
ranges.append(range)
}
var result = string
for range in ranges {
var newWord = string[range]
var reversed = ""
while !newWord.isEmpty {
reversed.append(newWord.removeLast())
}
result.replaceSubrange(range, with: reversed)
}
print(result) // "gnirtS ot eb esrever"
let word = "String to be reverse"
var reversed = ""
for char in word.characters {
reversed.insert(char, at: reversed.startIndex)
}
print(reversed)
这个 returns : "esrever eb ot gnirtS" 我想做的是这样 "ngirtS ot eb esrever"
您可以使用选项 .byWords
在范围内使用 enumerateSubstrings,获取所有子字符串范围并将它们替换为反向相同范围的子字符串:
let string = "String to be reverse"
var ranges: [Range<String.Index>] = []
string.enumerateSubstrings(in: string.startIndex..., options: .byWords) { _, range, _, _ in
ranges.append(range)
}
var result = string
for range in ranges {
var newWord = string[range]
var reversed = ""
while !newWord.isEmpty {
reversed.append(newWord.removeLast())
}
result.replaceSubrange(range, with: reversed)
}
print(result) // "gnirtS ot eb esrever"