2016-04-14 24 views
0

私はゲームの設定(.txt)の高さを編集しようとしています。すると、最後の数字だけが置き換えられます。私はそれがフロートであることが理由であると信じています。たとえば、[height = 0.11]でもremove関数は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); 
    } 
+0

ルーク申し訳ありませんが、それは午前2時だと私はknackeredです。 :P – ActualDragonTears

答えて

0
テキストファイルで

最後の数字の代わりに[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 
+0

ありがとう!私はある種の「作家のブロック」を持っていて、思うことができませんでした。 – ActualDragonTears

+0

問題ありません。これがうまくいく場合は、これを答えとして受け入れることができます。 –

+0

私はそれを私の必要に適応させようとしましたが、今はテキストファイルを編集していませんか? コード: http://pastebin.com/qrwS33Q7 – ActualDragonTears

関連する問題