У меня длинная строка с целыми значениями. Я хочу найти целочисленные значения с помощью Regex.Replace и заменить их после умножения на переменную.

Что-то вроде следующего

string text = "The the quick brown fox 23jumps o65ver th66e lazy dog.";

Будет

The the quick brown fox VAL*23jumps oVAL*65ver thVAL*66e lazy dog.

Я использовал Regex.Replace(text, @"(\d+)", @"$1");. Однако это не может обработать $ 1 и заменить найденное целое число.

1
nPcomp 5 Окт 2018 в 21:39

1 ответ

Лучший ответ

Используйте оценщик совпадений:

Regex.Replace(text, @"\d+", m => $"{VAL * int.Parse(m.Value)}")

См. демонстрацию C #:

var text = "The the quick brown fox 23jumps o65ver th66e lazy dog.";
var VAL = 4;
Console.WriteLine(Regex.Replace(text, @"\d+", m => $"{VAL * int.Parse(m.Value)}"));
// => The the quick brown fox 92jumps o260ver th264e lazy dog.
1
Wiktor Stribiżew 5 Окт 2018 в 18:50