【发布时间】:2015-05-04 22:23:14
【问题描述】:
我有一个 UTF-8 编码的字符串,我想遍历它, 将其拆分为多个分隔符之一。我也需要知道 哪个分隔符匹配,因为每个分隔符都有特定的含义。
示例用法:
algorithm("one, two; three") => Match("one")
algorithm(", two; three") => Delimiter(",")
algorithm(" two; three") => Match(" two")
algorithm("; three") => Delimiter(";")
algorithm(" three") => Match(" three")
附加信息:
- 我的分隔符都是单个ASCII字符,所以优化了 需要的算法是可能的。
- 处理 UTF-8 子字符串的解决方案也将不胜感激, 但不是必需的。
- 我计划多次调用该方法,并且可能在紧张的情况下 循环,因此理想的算法不需要分配任何内存。
- 算法应该返回第一个匹配的字符串或分隔符 我可以在下一次迭代中重新开始搜索。
- 理想的算法天生就知道它是否返回匹配或 分隔符,但可以在事后检查。
我的目标语言是 Rust,但我希望得到任何答案 具有类似较低层次焦点的语言。伪代码也很好, 只要它能够识别 UTF-8 文本的真实性。解决方案 使用深奥的十六进制技巧或 SIMD 指令也是合适的,但可能需要更多解释才能让我理解 ^_^。
【问题讨论】:
-
我一定错过了什么。 Rust 是否提供了一种遍历 utf-8 字符串字符的方法?一直这样做,直到您击中第一个匹配项或分隔符。
-
@ProgrammerPerson 这是我当前的解决方案和有效答案。我问的主要是因为我使用的似乎是一个幼稚的解决方案,并且它在我的应用程序中占用了合理的时间。因此,我希望有一些我没有想到的更聪明的东西。
标签: string algorithm search utf-8