2017-01-02 6 views
-1

私はここにファイルを持っているが、ファイルの内容です:キー値のペアを使用してファイルから文字列を取得するにはどうすればよいですか?

# Web surround localized strings 
# English language 
# 
# Important: This file must be saved with UTF-8 encoding 
# 

# General 

# GeoMarker - temporary pin markup. 
SERVERERROR    = Error!Please Contact admin. 
ERRORSTACKTRACE   = Stack Trace 

私は私がキーに応じmassegeフェッチする必要がSERVERERRORERRORSTACKTRACEキーの上にファイルを持っているkey.Currentlyに応じて上記のファイルからマッサージを取得する必要があります。

どうすればC#で実装できますか?

+2

あなたが来るのか知っているので、あなたは、2.3k担当者を持っている:あなたは、これまでに試してみました、あなたが立ち往生どこを取得したのは何? Web上のC#でファイルを読み込む例は数多くあります。 –

+0

テキストを解析するいくつかの方法を考えるのはむしろ簡単です。 '='で分割し、正規表現を使用します。 '#'で始まる行を除外します。なぜそのような '私のためのコードを書く'の質問? –

+0

@PanagiotisKanavosあなたは例を見せていただけますか? – Michael

答えて

1
int counter = 0; 
string line; 
System.IO.StreamReader file = 
      new System.IO.StreamReader("s.txt"); 
while((line = file.ReadLine()) != null) 
{ 
if(line.Contains("SERVERERROR") || line.Contains("ERRORSTACKTRACE")) 
    Console.WriteLine (line); 
    counter++; 
} 
    file.Close(); 

出力:!

SERVERERROR =エラー管理者にお問い合わせください。また、正確なエラーを取得する ERRORSTACKTRACE =スタックトレース

...

if(line.Contains("SERVERERROR") || line.Contains("ERRORSTACKTRACE"))

Console.WriteLine (line.Split('=')[1].ToString()); 

を...

+0

この値は「SERVERERROR = Server Error」ですが、私はこのキーSERVERERRORの値を得ることを期待しています(つまり、エラー!管理者に連絡してください)。 – Michael

+0

試してみてください:Console.WriteLine line.Split( '=')[0] .ToString()+ "" + line.Split( '=')[1] .ToString());出力:SERVERERRORエラー!管理者に連絡してください。 –

1

次作品:

var str = "SERVERERROR    = Error!Please Contact admin."+ 
       "ERRORSTACKTRACE   = Stack Trace"; 

    var output = new Dictionary<string,string>(); 

    foreach(var item in str.Split('.').ToList()){ 
     var kv = item.Split('='); 
     output.Add(kv[0].Trim(),kv[1].Trim()); 
    } 

    Console.WriteLine(output["SERVERERROR"]); 
    Console.WriteLine(output["ERRORSTACKTRACE"]); 

チェックこのフィドル: https://dotnetfiddle.net/5LgiE7

+1

区切り記号は改行であり、ドットではありません。あなたのテスト入力には改行もありません。ファイルからの読み込みは、とにかく行を分割する必要はなく、個々の行を読むことができます –

関連する問題