Замена значения в текстовом файле только замена последнего числа?

Поэтому я пытаюсь изменить высоту в игровом конфиге (.txt), и когда я это сделаю, я заменю только последний номер. Я полагаю, что это из-за ценности, являющейся плаванием. Например, [height = 0.11], но функция удаления будет принимать int?

В текстовом файле: высота = 0,11

Как только новая высота была записана (0.2): высота = 0.10.2

Код, который у меня сейчас есть:

    string text = File.ReadAllText(carDataFile + "\\steamapps\\common\\Car Mechanic Simulator 2015\\cms2015_Data\\Datacars\\car_BoltHellcat.txt");
    const string Pattern = @"height= (?<Number>[\d\.])";
    Match match = Regex.Match(text, Pattern, RegexOptions.IgnoreCase);

    if (match.Success)
    {
        int index = match.Groups["Number"].Index;
        int length = match.Groups["Number"].Length;

        text = text.Remove(index, length);
        text = text.Insert(index, height.ToString());

        File.WriteAllText(carDataFile + "\\steamapps\\common\\Car Mechanic Simulator 2015\\cms2015_Data\\Datacars\\car_BoltHellcat.txt", text);
    }

1 ответ

Мне удалось сделать это, заменив весь [height= 0.11] значение, а не просто пытаться заменить последний набор цифр. Я думаю, что проблема заключается в попытке определить, какая группа имеет правильное соответствие и правильный индекс / длину.

string text = "stuff before [height= 0.11] stuff after";
string height = "height= 0.2";
const string Pattern = @"height= (\d+(\.\d{1,2})?)";
Match match = Regex.Match(text, Pattern, RegexOptions.IgnoreCase);

if (match.Success)
{
    int index = match.Index;
    int length = match.Length;

    text = text.Remove(index, length);
    text = text.Insert(index, height.ToString());

    Console.WriteLine(text);
}

Выходы:

stuff before [height= 0.2] stuff after
Другие вопросы по тегам