匹配数字并在替换之前添加
Match number and add before replace
假设我在text.txt中有:
prop:"txt1" prop:'txt4' prop:"txt13"
我希望它变成(加9):
prop:"txt10" prop:'txt13' prop:"txt22"
在javascript中,它将是:
var output = input.replace(/prop:(['"])txt('d+)'1/g, function(match, quote, number){
return "prop:" + quote + "txt" + (parseInt(number) + 9) + quote;
});
我正在尝试用C#对上面的代码进行编码:
string path = @"C:/text.txt";
string content = File.ReadAllText(path);
File.WriteAllText(path, Regex.Replace(content, "prop:([''"])txt(''d+)''1", ?????));
Visual Studio显示第三个参数应该是MatchEvaluator evaluator
。但我不知道如何声明/写入/使用它。
欢迎任何帮助。谢谢你抽出时间。
您可以使用Match计算器并使用Int32.Parse
将数字解析为int值,您可以将9添加到:
Regex.Replace(content, @"prop:(['""])txt('d+)'1",
m => string.Format("prop:{0}txt{1}{0}",
m.Groups[1].Value,
(Int32.Parse(m.Groups[2].Value) + 9).ToString()))
查看IDEONE演示:
var content = "prop:'"txt1'" prop:'txt4' prop:'"txt13'"";
var r = Regex.Replace(content, @"prop:(['""])txt('d+)'1",
m => string.Format("prop:{0}txt{1}{0}",
m.Groups[1].Value,
(Int32.Parse(m.Groups[2].Value) + 9).ToString()));
Console.WriteLine(r); // => prop:"10" prop:'13' prop:"22"
请注意,我使用的是逐字字符串文字,以便使用单个反斜杠来转义特殊字符并定义速记字符类(然而,在逐字字符串文字中,双引号必须加倍以表示单个文字双引号)。
MatchEvaluator
是一个委托。您需要编写一个使用Match
并返回替换值的函数。一种方法如下所示:
private static string AddEvaluator(Match match)
{
int newValue = Int32.Parse(match.Groups[2].Value) + 9;
return String.Format("prop:{0}txt{1}{0}", match.Groups[1].Value, newValue)
}
public static void Main()
{
string path = @"C:/text.txt";
string content = File.ReadAllText(path);
File.WriteAllText(path, Regex.Replace(content, "prop:([''"])txt(''d+)''1", AddEvaluator));
}
相关文章:
- 将url替换为链接,但添加了困难
- Firebase推送;t添加但替换(JavaScript)
- jQuery appendTo 替换元素而不是添加元素,如果正在添加的元素预先存在于列表中
- 用javascript添加类,而不是替换
- 将字符串添加到不区分大小写的 RegExp 中替换的事物开始
- JS添加到功能而不是替换为原型
- 用图像替换页面,而不是添加图像
- 匹配数字并在替换之前添加
- 用javascript替换文本中的几个字符串 - 如何添加更多变量
- 是否存在替换Javascript构造函数的问题'原型,而不是添加到原型中
- 将值添加到本地存储,而不是替换它
- 添加另一个变量后,正则表达式替换不起作用
- Opencart 过滤器添加 onclick 事件以替换提交按钮
- 数组项不添加,但替换当前项
- 使用 JavaScript 添加(而不是替换)CSS 类
- 用javascript / JQuery替换并添加包装器
- JS 中的正则表达式 - 添加要替换的匹配项
- 将 onfocus 和 onblur 函数替换或添加到 jQuery 函数中的文本框
- 图像在多个源DIV,添加/替换当前图像从每个DIV点击到目标DIV
- 当添加替换时,带有多个收件人的Node.js sendgrid得到空值