如何在不使用 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"