2016-04-14 14 views
0

Also versuche ich die Höhe in einer Spielekonfig (.txt) zu bearbeiten und wenn ich das tue, werde ich nur die letzte Nummer ersetzen. Ich glaube es liegt daran, dass der Wert ein Float ist. Zum Beispiel, [Höhe = 0,11], aber die Remove-Funktion wird in Int's aufnehmen?Ersetzen eines Werts in einer Textdatei, wobei nur die letzte Zahl ersetzt wird?

In der Textdatei: height = 0,11

Sobald die neue Höhe hat geschrieben worden (0,2): height = 0.10.2

Der Code, den ich derzeit haben:

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); 
    } 
+0

Leider Luke, es ist 02.00 Uhr und ich bin todmüde. : P – ActualDragonTears

Antwort

0

Ich habe das geschafft, indem ich den gesamten [height= 0.11] Wert ersetzt habe, anstatt nur zu versuchen, die letzten Ziffern zu ersetzen. Ich denke, das Problem besteht darin, herauszufinden, welche Gruppe die richtige Übereinstimmung und den richtigen Index/die richtige Länge hat.

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); 
} 

Ausgänge:

stuff before [height= 0.2] stuff after 
+0

Vielen Dank! Ich hatte eine Art "Writers Block" und konnte einfach nicht denken. – ActualDragonTears

+0

Kein Problem. Wenn dies für Sie funktioniert, können Sie dies als Antwort akzeptieren. –

+0

Also habe ich versucht, es an meine Bedürfnisse anzupassen, aber jetzt editiert es nicht die Textdatei? Code: http://pastebin.com/qrwS33Q7 – ActualDragonTears