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#中的,什么是一个好的方法?谢谢。
正则表达式是理想的。您可以使用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";
}