ios - 如何在不使用 reverse() 函数的情况下反转字符串,希望反转是逐字而不是从最后一个索引到 swift 中的第一个索引
问题描述
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”
解决方案
您可以使用选项在范围内使用 enumerateSubstrings .byWords
,获取所有子字符串范围并将它们替换为相同范围的子字符串反转:
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"
推荐阅读
- swift - 在奇怪的行为中比较角度和向上
- python - 是否可以将 POST 请求中的视频读入 python-ffmpeg 或 OpenCV?
- python - Python pydantic 范围验证
- node.js - Dockerfile 应该执行“npm install”和“npm run build”还是应该只复制这些文件?
- r - 如何标记给定 ggplot 对象中数据点的 y 值?
- java - Vaadin - 导航时更新样式
- html - 使用 HTML 表单在新选项卡中生成输入结果
- c++ - glsl 中 sampler2D 上的“纹理”函数调用使整个屏幕变灰
- git - 吊舱不可见
- python - 在 Python 3 中将单个字节打印为十六进制