Существует много чисел как 200 20.5 329.2... в файле. Теперь, я должен заменить каждое число A A*0.8. Там какой-либо простой метод состоит в том, чтобы заменить исходное значение другим на основе исходного значения?
С уважением,
Попробуйте это:
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,5. Следующее предложение
:
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());