如何在不使用reverse()函数的情况下反转字符串,希望逐个单词而不是从最后一个索引到第一个索引迅速地反转

时间:2018-07-17 02:27:53

标签: ios swift reverse

let word = "String to be reverse"

var reversed = ""
for char in word.characters {
    reversed.insert(char, at: reversed.startIndex)
}
print(reversed)

这将返回:“ esrever eb ot gnirtS” 我正在尝试做的就是这样的“ ngirtS ot eb esrever”

1 个答案:

答案 0 :(得分:2)

您可以使用选项.byWords在range中使用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"