You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Rust中实现字符串指定单引号字符的重复处理?

解决字符串中单引号重复的问题

需求:将字符串中的单引号字符替换为两个单引号,例如输入O'Brian,输出O''Brian。

你的代码存在几处问题,修正后的可运行版本如下:

use std::iter;

pub fn sanitize_string(input: String) -> String {
    input
        .chars()
        .flat_map(|c| {
            if c == '\'' {
                iter::repeat(c).take(2)
            } else {
                iter::once(c)
            }
        })
        .collect()
}

问题说明与修正点:

  • 移除不必要的async:函数内无异步操作,标记async完全多余,只会增加不必要的复杂度。
  • 删除分支末尾的分号:Rust中if-else是表达式,分支后的分号会让表达式返回空单元(),但flat_map要求返回迭代器类型。去掉分号后,分支才会正确返回对应的迭代器。
  • 简化冗余调用:iter::once(c)本身就是仅生成单个元素的迭代器,无需额外调用take(1)。
  • 修正函数名拼写:原代码中的sanize_string应为标准拼写sanitize_string。
  • 导入必要模块:使用iter::repeat和iter::once需要先导入std::iter模块。

测试示例:

fn main() {
    let input = "O'Brian".to_string();
    let output = sanitize_string(input);
    assert_eq!(output, "O''Brian");
}

内容的提问来源于stack exchange,提问作者Antonin GAVREL

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.26 18:43:31