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

时间:2011-11-11 01:32:16

标签: c# string

我有字符串。 “12341234115151_log_1.txt”(此字符串长度不固定。但“ log ”模式始终相同) 我有一个for循环。 每次迭代,我想在i的“log”之后设置数字。

喜欢“12341234115151_log_2.txt” “12341234115151_log_3.txt” ....

要 “12341234115151_log_123.txt”

在c#中,有什么好办法呢? 感谢。

4 个答案:

答案 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";
}