我有字符串。 「12341234115151_log_1.txt」(該字符串長度不固定,但「」日誌「模式始終相同) 我有一個for循環。 每次迭代,我想設置我的「日誌」後的數字。c#中的字符串。替換循環中的某個數字
像 「12341234115151_log_2.txt」 「12341234115151_log_3.txt」 ....
到 「12341234115151_log_123.txt」
在C#,什麼是這樣做的一個好辦法嗎? 謝謝。
我有字符串。 「12341234115151_log_1.txt」(該字符串長度不固定,但「」日誌「模式始終相同) 我有一個for循環。 每次迭代,我想設置我的「日誌」後的數字。c#中的字符串。替換循環中的某個數字
像 「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
。使用正則表達式來獲取計數器,然後將它們附加在一起。
如果我讀過你的問題吧...
怎麼樣,
for (int i =0; i<some condition; i++)
{
string name = "12341234115151_log_"+ i.ToString() + ".txt";
}
您可以使用正則表達式。像這樣
var r = new Regex("^(.*_log_)(\\d).txt$")
for ... {
var newname = r.Replace(filename, "${1}"+i+".txt");
}
聽起來像是正則表達式一個完美的工作:\ d + _log _(\ d +)TXT – Joe
所以,你想使日誌文件看起來是這樣的:'12341234115151_log_1.txt,12341234115151_log_12.txt,12341234115151_log_123.txt, 12341234115151_log_1234.txt' etc? – John