Skip to main content

slugify

Function slugify 

Source
pub fn slugify(title: &str) -> String
Expand description

将标题转换为 URL 友好的 slug。

汉字转为无声调拼音(每字独立成词,用 - 分隔,如 你好ni-hao); ASCII 字母数字与 -/_ 保留;其余字符替换为 -,连续 - 合并。 结果截断至 100 字符;若全部被过滤则回退为当前时间戳。

多音字取默认读音(不处理歧义),博客 slug 场景足够。

单遍状态机实现:旧实现 to_lowercase 分配一次 String + split.collect::<Vec> + join 再分配 + take.collect 第三次分配,共 4 次堆分配、3 遍扫描。 现用 prev_dash 状态在单遍内合并连续 - 并按需截断,1 次分配、1 遍扫描。