当替换器使用变量时,如何调用 Regex::replace_all?

2024-05-02

对于下面的代码,我尝试输出输入单词,后跟随机字符串。第一个函数可以编译,但我不想要它,因为它不使用随机字符串。第二个函数会产生编译器错误。

我如何解决它?

use regex::Regex;

fn main() {
    let cd="rust";
    ok_but_i_dont_want_it(cd);
    compiler_err(cd);
}

fn ok_but_i_dont_want_it(cd:&str){
    let random_str="j93bg8";
    let reg_idnt=Regex::new(r"(?P<ident>[_A-Za-z]{1,}[_A-Za-z0-9]{0,})").unwrap();
    let cd=reg_idnt.replace_all(" rust ","${ident}_{}");
    println!("{}",cd);
}

fn compiler_err(cd:&str){
    let random_str="j93bg8";
    let reg_idnt=Regex::new(r"(?P<ident>[_A-Za-z]{1,}[_A-Za-z0-9]{0,})").unwrap();
    let cd=reg_idnt.replace_all(cd,format!("${ident}_{}",random_str));
    println!("{}",cd);
}
error: there is no argument named `ident`
  --> src/main.rs:18:47
   |
18 |      let cd=reg_idnt.replace_all(cd,format!("${ident}_{}",random_str));
   |                                               ^^^^^^^

error[E0277]: expected a `FnMut<(&regex::Captures<'_>,)>` closure, found `String`

如果你不想format!来处理{ident}, 你可以escape https://doc.rust-lang.org/std/fmt/index.html#escaping通过将大括号加倍来实现:

reg_idnt.replace_all(cd, format!("${{ident}}_{}", random_str));

这会导致format!忽略它,结果将是"{ident}_j93bg8"它被传递给replace_all.


你缺少一个.as_str()通过String from format! as a &str为了满足Replacer.

format!("${{ident}}_{}", random_str).as_str()

看到它运行在

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

当替换器使用变量时,如何调用 Regex::replace_all? 的相关文章

随机推荐

  • 获取整个 Jupyter Notebook 的当前内容

    我有一个正在运行的 Jupyter Notebook 我希望能够从 Python 中访问当前 Jupyter Notebook 的源代码 我的最终目标是将其传递到ast parse这样我就可以对用户的代码进行一些分析 理想情况下 我能够做这
  • R:返回数据框中匹配的行数和列数

    emperor lt rbind cbind Augustus Tiberius cbind Caligula Claudius 如何返回包含序列 us 的所有单元格的行号和列号 即 1 1 1 2 2 2 我们可以使用grepl得到一个v
  • Spring data mongodb字段自增

    如何使集合中的字段自动递增 Document public class Product Id private BigInteger id private String name need to be auto inc private int
  • 如何在我的应用程序中从存折访问通行证?

    我正在创建应用程序 在其中添加并显示从 iOS6 存折应用程序到我的应用程序的通行证 但是当我在模拟器上运行应用程序时 它显示添加的通行证 但是当我在设备上运行相同的应用程序时 它显示我的存折是空的 我已关注iOS6 教程集成存折您的应用程
  • Windows Azure VM (Iaas) 意外重启 [关闭]

    Closed 这个问题是无关 help closed questions 目前不接受答案 我在 Windows Azure Iaas 上有许多虚拟机托管一个网站 有许多负载平衡的前端虚拟机 全部通过 SQL Express 连接到单个虚拟机
  • 在 Play 框架规范中设置 PhantomJSDriver 上的 Accept-Language

    如何使用 Play Framework 2 2 规范中的特定 Accept Language 语言标头配置 PhantomJSDriver 鉴于此代码 import org specs2 mutable import org specs2
  • 为什么界面构建器不能使用 UIView 的具体通用子类?

    首先 这已被投票关闭 作为为什么不能直接在 Interface Builder 中使用泛型的重复 TLDR 的答案是 IB 使用 Objective C 而 Objective C 不支持泛型 无论如何 没有办法指定泛型的 特殊性 即它使用
  • 计算Mac中目录及其子目录的特定文件类型的数量

    I use ls l filetype wc l但它只能查找当前目录中的文件 我怎样才能计算子目录中具有特定扩展名的所有文件 非常感谢 你可以这样做find命令 find name filetype wc l
  • C# - 应用程序的参数

    我怎样才能做到当程序名称末尾添加参数时它会执行特定的方法或其他什么 另外 这个有名字吗 Example 程序 exe i 我也见过 1 这些被称为命令行参数 有一个MSDN 上的很好的教程 http msdn microsoft com e
  • 跨多个表的 JPA 本机查询

    我将以下内容定义为存储库 dispenseRepository 中的本机查询 Query value SELECT p c s d from patient p consult c script s dispense d where p p
  • REST api:在一次获取中请求多个资源[重复]

    这个问题在这里已经有答案了 我正在尝试设计一个 RESTful API 用户可以在单个 GET 请求中获取单个产品或产品列表 每个产品都有一个唯一的 ID 单个产品 URL 非常简单 http mycompany com api v1 pr
  • R:将多列转换为单列[重复]

    这个问题在这里已经有答案了 我有一个看起来像这样的数据框 ID week1 t week1 a week2 t week2 a 1 12 22 17 4 1 15 32 18 5 1 24 12 29 6 2 45 11
  • Git 注释详细信息

    我读了this http git scm com 2010 08 25 notes html and this https github com blog 707 git notes display但仍然认为它们晦涩难懂 目前为止了解到 创
  • 类型不包含“GetProperties”的定义

    我正在将库项目迁移到 net 标准 当我尝试使用System Reflection调用APIType GetProperties 类型不包含 GetProperties 的定义 这是我的project json version 1 0 0
  • 需要有关上下文菜单的建议

    我有一个 XML 布局 其中有两个编辑文本字段 一个用于 标题 另一个用于 故事 当用户在这些文本字段中输入数据并按后退按钮时 该条目将作为标题集保存在列表视图中 列表视图出现在 A1 活动中 现在A1扩展了Activity 每当 长按 列
  • 使用堆属性按排序顺序打印树 (Cormen)

    我对算法理论 来自 Cormen 感到耳目一新 二进制尝试一章中有一个练习 要求 min heap 属性可以用来打印 n 节点的键吗 树在 O n 时间内排序 展示如何做 或解释为什么不做 我想是的 这是可能的 在最小堆中 节点中的元素小于
  • cesium:如何在Cesium中设置不同形状的Z-index?

    如何在Cesium中设置不同形状的Z index 请参阅下面的屏幕截图 我希望圆柱体内的广告牌图标显示在圆柱体上 提前致谢 这并不容易 因为您的圆柱体是实际的 3D 体积 并且您的广告牌位于其中 3D 渲染引擎中没有 CSS 样式的 Z 索
  • 如何以编程方式证明“六度分离”概念?

    我有一个包含 2000 万用户以及这些人之间的联系的数据库 如何证明 六度分离 的概念以最有效的方式在编程中 链接到有关六度分离的文章 http en wikipedia org wiki Six degrees of separation
  • 如何从 ModelState 键中删除前缀?

    例如 有一个Web Api操作方法 public HttpMessageResponse Post UserDto userDto if this ModelState IsValid return this Request CreateE
  • 当替换器使用变量时,如何调用 Regex::replace_all?

    对于下面的代码 我尝试输出输入单词 后跟随机字符串 第一个函数可以编译 但我不想要它 因为它不使用随机字符串 第二个函数会产生编译器错误 我如何解决它 use regex Regex fn main let cd rust ok but i