Вы можете использовать Regex
, чтобы идентифицировать числа в строке и заменить их новым значением.Например;
var data = @"M311.97458,250.39993 L213.97533,248.39996 222.37435,216.7998 C222.37435,216.7998 ......589.5753,173.99994,593.1753,179.9999......334.3039,253.21373 311.97458,250.39993 z";
var replaced = Regex.Replace(data, "((?=[^, ])\\d+\\.\\d+)", (match) => (double.Parse(match.Value) + 1).ToString());
// output: M312.97458,251.39993 L214.97533,249.39996 223.37435,217.7998 C223.37435,217.7998 ......590.5753,174.99994,594.1753,180.9999......335.3039,254.21373 312.97458,251.39993 z
Так что здесь шаблон Regex
идентифицирует числа в строке, находя все, что не является запятой или пробелом и является числовым с десятичным знаком в (так что это не будет работатьдля целых чисел, но вы можете адаптировать, если требуется).Затем, эффективно в Regex.Replace
мы перебираем каждое совпадение и используем MatchEvaluator , чтобы добавить единицу к числу и вернуть ее для формирования новой строки.