c#中的字符串.替换循环中的某个数字

本文关键字:数字 替换 字符串 循环 | 更新日期: 2023-09-27 18:14:03

我有字符串。"12341234115151_log_1.txt"(此字符串长度不固定。但是"log"模式总是一样的)我有一个for循环。每次迭代,我想设置I的log后面的数字。

像"12341234115151 _log_2.txt"12341234115151 _log_3.txt"…

"12341234115151 _log_123.txt "

c#中的

,什么是一个好的方法?谢谢。

c#中的字符串.替换循环中的某个数字

正则表达式是理想的。您可以使用Regex.Replace方法并使用MatchEvaluator委托来执行数值递增。

string input = "12341234115151_log_1.txt";
string pattern = @"('d+)(?='.)";
string result = Regex.Replace(input, pattern,
    m => (int.Parse(m.Groups[1].Value) + 1).ToString());

模式分解如下:

  • ('d+):匹配并捕获任何数字,至少一次
  • (?='.):这是一个预先检查,确保在数字后面有一个句号(或点)。点必须转义为文字点,而不是正则表达式元字符。我们知道你想要增加的值就在"。txt"的前面,所以它后面应该总是有一个点。你也可以使用(?='.txt)使它更清晰和明确,但如果你的文件扩展名可以有不同的情况,你可能不得不使用RegexOptions.IgnoreCase

可以使用正则表达式。这样的

    var r = new Regex("^(.*_log_)(''d).txt$")
    for ... {
        var newname = r.Replace(filename, "${1}"+i+".txt");
    }

使用正则表达式获取计数器,然后将它们附加在一起。

如果我没看错你的问题…

怎么样,

for (int i =0; i<some condition; i++)
{
  string name = "12341234115151_log_"+ i.ToString() + ".txt";
}