我想采用以下输入<tag>30.234234cm</tag>
并获得以下输出<tag>302.34234mm</tag>
。标签之间的值是以厘米为单位的值,可以是十进制或整数,目标是将该值转换为毫米。
var input = "<tag>30.234234cm</tag>";
input = Regex.Replace(input, @"(\d+(\.\d+)?)cm", (double.Parse("$1") * 10).ToString() +
"mm", RegexOptions.IgnoreCase);
我使用表达式(\d+(\.\d+)?)
作为第一个捕获组。但是,$1
在double.Parse($1)
的上下文中不起作用。如何获取单元的值,转换它并在提供的示例字符串中替换它?
答案 0 :(得分:5)
那么,
double.Parse("$1")
尝试解析"$1"
常量string
并失败。我建议使用 lambda :
var input = "<tag>30.234234cm</tag>";
input = Regex.Replace(
input,
@"(\d+(\.\d+)?)cm",
match => (double.Parse(match.Groups[1].Value) * 10).ToString() + "mm",
RegexOptions.IgnoreCase);
此处match.Groups[1].Value
是已捕获组的值(示例中为30.234234
)
答案 1 :(得分:0)
你使用"(\d+(\.\d+)?)cm"
和“cm”作为捕获,因为你不能执行`double.Parse(“$ 1”)