gpt4 book ai didi

c# - 在 regex.Replace 中对命名捕获组执行操作

转载 作者:行者123 更新时间:2023-11-30 12:30:21 29 4
gpt4 key购买 nike

如果这是重复的,我提前道歉 --- 我无法想象以前没有人问过它 - 但我似乎找不到它。

为什么下面的第二个 c# 语句抛出异常?

var regex = new Regex(@"\[IMG(?<image_number>[0-9]+)\]");
regex.Replace("[IMG1]", int.Parse("${image_number}").ToString());

我知道我可以访问指定的组,但我不能对其执行操作——在本例中是 int.Parse()。当我尝试以这种方式使用命名组时,它只会给我字符串“${image_number}”——当然不能将其解析为整数。

谢谢。

最佳答案

Regex 类并不神奇。

它不能神奇地将捕获的值插入出现在 Replace 调用中的字符串文字中。
相反,如果您将引用捕获组的字符串传递给Replace() 方法,它将解析出该字符串并插入该值。

您需要pass a lambda expression :

regex.Replace("[IMG1]", m => int.Parse(m.Groups["image_number"].Value).ToString());

关于c# - 在 regex.Replace 中对命名捕获组执行操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16280503/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com