我有字符串。 “12341234115151_log_1.txt”(此字符串长度不固定。但“ log ”模式始终相同) 我有一个for循环。 每次迭代,我想在i的“log”之后设置数字。
喜欢“12341234115151_log_2.txt” “12341234115151_log_3.txt” ....
要 “12341234115151_log_123.txt”
在c#中,有什么好办法呢? 感谢。答案 0 :(得分:1)
您可以使用Regex。像这样
var r = new Regex("^(.*_log_)(\\d).txt$")
for ... {
var newname = r.Replace(filename, "${1}"+i+".txt");
}
答案 1 :(得分:1)
正则表达式是理想的。您可以使用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
。答案 2 :(得分:0)
使用正则表达式获取计数器,然后将它们一起追加。
如果我正确地读了你的问题......
答案 3 :(得分:0)
怎么样,
for (int i =0; i<some condition; i++)
{
string name = "12341234115151_log_"+ i.ToString() + ".txt";
}