javascript - 匹配数字并在替换之前添加

标签 javascript c# regex

假设我在 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 evaluator并使用 Int32.Parse 将数字解析为可以将 9 添加到的 int 值:

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 demo :

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" 

请注意,我正在使用逐字字符串文字,以便使用单个反斜杠转义特殊字符并定义速记字符类(但是,在逐字字符串文字中,双引号必须加倍以表示单个文字双引号) .

关于javascript - 匹配数字并在替换之前添加,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36208195/

相关文章:

c# - Crystal Report 不会将数据集放在一起

c# - 正则表达式:查找以下一个单词开头的相同字母结尾的单词

regex - 需要为时事通讯注册跟踪编写 Google Analytics 正则表达式模式

Python正则表达式排除电子邮件模式但包含@string模式

javascript - 为什么 XMLHttpRequest 对象的属性只能通过 console.log() 打印?

未调用 WebView 的 JavascriptInterface 方法

javascript - 如何获取可拖动元素掉落的值?

c# - Windows 8 专业版平板电脑上的 WPF Windows 客户端应用程序

javascript - 使用 require.js,避免重复更新对象

c# - Emgu CV 位图到图像不再有效