Замена значения в текстовом файле только замена последнего числа?
Поэтому я пытаюсь изменить высоту в игровом конфиге (.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