2016-10-05 27 views
0

各行が設定と値の組み合わせである構成ファイルがあります。値が何に設定されているのか分かりませんが、設定の名前はわかります。ここでは、行全体を更新する必要があります。私は、File.ReadAllText.ReplaceとFile.WriteAllTextを使用して多数の例を見つけましたが、これらは特定の文字列を別の文字列に置き換えています。Cで特定の文字列を含むファイルの行を置換する#

設定例ライン:

私は「Server.ServerType =」この例では、私は「モッドServer.ServerType =」でそれに代わる含む行を見つける必要があり
Server.ServerType=official 

C#を使用してこれを行う最も単純なアプローチは何でしょうか?

+0

多分[システム。 Text.RegularExpressions](https://msdn.microsoft.com/en-us/library/xwewhkd1(v = vs.110).aspx)を参照してください。または、[この投稿](http://stackoverflow.com/questions/485659/can-net-load-and-parse-a-properties-file-equivalent-to-java-properties-class)の場合に '= 'sign in value – gwillie

答えて

0

"="記号で行を分割し、最初の要素を使ってテストし、必要に応じて2番目の要素を変更してから、 "="記号を置き換えて結合します。私はあなたが(IF/THENsの多くよりも簡単)複数のテストを持っているだろうと仮定するとスイッチを使用:

string line = ReadLine(); 
    string[] parts = line.Split('='); 
    switch(parts[0]){ 
     case "Server.ServerType": 
     parts[1] = "modded"; 
     break; 
     .... 
    } 
    string newline = String.Join("=",parts); 
    WriteLine(newline); 

あなたは何度も値を変更する場合は、あなたが使用できます。

Dictionary<string,string> values = new Dictionary<string,string> 
string[] parts = Readline().Split('='); 
values.Add(parts[0],parts[1]); 
values["Server.ServerType"] = "modded"; 
.... 
foreach(KeyValuePair<string,string> kvp in values){ 
    WriteLine(kvp.Key+"="+kvp.Value); 
} 
+0

優秀、私はそれを試してみましょう。ありがとうございました! –

+0

助けになるのはうれしいです。乾杯! –

関連する問題