Строка в C #. заменить определенное число в цикле - PullRequest
1 голос
/ 11 ноября 2011

У меня есть строка. «12341234115151_log_1.txt» (эта длина строки не является фиксированной., Но шаблон « log » всегда один и тот же) У меня есть цикл. на каждой итерации я хочу установить число после «log» i.

как "12341234115151_log_2.txt" "12341234115151_log_3.txt" ....

в "12341234115151_log_123.txt"

в c #, как это можно сделать? спасибо.

Ответы [ 4 ]

1 голос
/ 11 ноября 2011

регулярное выражение идеально подходит для этого.Вы можете использовать метод 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, если у вашего расширения имени файла могут быть другие случаи.
1 голос
/ 11 ноября 2011

Вы можете использовать Regex.как это

    var r = new Regex("^(.*_log_)(\\d).txt$")
    for ... {

        var newname = r.Replace(filename, "${1}"+i+".txt");
    }
0 голосов
/ 11 ноября 2011

Как насчет

for (int i =0; i<some condition; i++)
{
  string name = "12341234115151_log_"+ i.ToString() + ".txt";
}
0 голосов
/ 11 ноября 2011

Используйте регулярные выражения, чтобы получить счетчик, а затем просто сложите их вместе.

Если я правильно прочитал ваш вопрос ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...