Регулярное выражение для замены чисел в файле - PullRequest
5 голосов
/ 31 марта 2010

В файле много чисел типа 200 20,5 329,2 .... Теперь мне нужно заменить каждое число A на A * 0,8. Есть ли простой способ заменить исходное значение другим, основанным на исходном значении?

С наилучшими пожеланиями,

Ответы [ 2 ]

8 голосов
/ 31 марта 2010

Попробуйте это:

String s = "This is the number 2.5. And this is 7";
s = Regex.Replace(s, @"[+-]?\d+(\.\d*)?", m => {return (Double.Parse(m.ToString())*0.8).ToString();});
// s contains "This is the number 2. And this is 5.6"

Редактировать: Добавлен знак плюс / минус в качестве дополнительного символа перед. Чтобы не поймать 5 на 3-5 как отрицательное, вы можете использовать ((?<=\s)[+-])? вместо [+-]

0 голосов
/ 31 марта 2010

Использование лямбды и немного лучшая обработка таких случаев, как The value is .5. Next sentence:

var s = "This is the number 2.5. And this is 7, .5, 5. Yes.";
var result = Regex.Replace(s, @"[+-]?(\d*\.)?\d+", m => (double.Parse(m.Value) * 0.8).ToString());
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...