我提前道歉,如果这是重复的话 - 我无法想象以前没有被问过 - 但我似乎无法找到它。
为什么下面的第二个c#语句会抛出异常?
var regex = new Regex(@"\[IMG(?<image_number>[0-9]+)\]");
regex.Replace("[IMG1]", int.Parse("${image_number}").ToString());
我知道我可以访问命名组,但是我无法对它执行操作 - 在本例中为int.Parse()。当我尝试以这种方式使用命名组时,它只给我字符串“$ {image_number}” - 当然不能将其解析为整数。
感谢。
答案 0 :(得分:2)
Regex
类并不神奇。
它无法在Replace
个调用中出现的字符串文字中神奇地插入捕获的值
相反,如果将引用捕获组的字符串传递给Replace()
方法,它将解析出字符串并插入值。
regex.Replace("[IMG1]", m => int.Parse(m.Groups["image_number"].Value).ToString());