Заменить текст в коде подсчетом чисел - PullRequest
3 голосов
/ 01 июня 2010

Из-за тестирования и измерения времени я должен записать какой-то журнал в существующий проект C # Winforms.

Я хочу минимизировать изменения в приложении, поэтому я ограничиваю свой вопрос заменой текста подсчетом чисел:

Я хочу пройти строку:

Log.WriteLine(position)

много раз в коде, а затем заменить «положение» числами, начиная с 1 до n по очереди.

Я не могу использовать счетчик в этом случае из-за большого количества циклов, я не могу получить правильную позицию.

Ответы [ 3 ]

2 голосов
/ 01 июня 2010

Взгляните на это .

Вы можете получить имя файла и номер строки вместо счетчика.

static private void Trace()
{
     StackFrame callStack = new StackFrame(1, true);
     Log.WriteLine(
       String.Format("At {0}:{1}",
         callStack.GetFileName(),
         callStack.GetFileLineNumber()));
}
1 голос
/ 01 июня 2010

Предполагая, что я правильно прочитал ваш вопрос, я написал бы простой сценарий на [укажите, какой язык сценариев является вашим любимым].

По сути, напишите свой код, а затем используйте скрипт для подстановок.

Вы можете сделать perl-one-liner что-то вроде perl -e open FILE, ">", "file.cs"; $i = 0; while(<INF>) { $_ ~= s/position/$i++/g; print $_; } > mynewfile.cs

Это, конечно, не настоящий синтаксис perl, но по сути это идея.

1 голос
/ 01 июня 2010

Я не понимаю, почему вы думаете, что вы не можете использовать счетчик для этого. Если у вас возникли проблемы с глубоко вложенными циклами и множеством операторов if, затрудняющих вычисление значения позиции, когда вы хотите его записать, просто сделайте что-то вроде этого

Log.WriteLine(position++)

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

Полагаю, я неправильно понял ваш вопрос, так что вы можете немного уточнить.

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