2016-10-24 23 views
-3

*内容の配列文字列が必要ですが、実装には問題があります。CでFile.WriteAllLinesの問題が発生しました

Dictionary<string, string> dictionary = new Dictionary<string, string>(); 
string[] array = File.WriteAllLines("settings.cfg"); 
for (int i = 0; i < array.Length; i++) 
{ 
    string text = array[i]; 
    if (!text.StartsWith("/") && text.Contains(":")) 
    { 
     string[] array2 = text.Split(new char[] 
     { 
      ':' 
     }); 
     dictionary.Add(array2[0], array2[1]); 
    } 
} 

* string[]のコンテンツはどのように実装しますか?

+1

あなたは 'WriteAllLines'に行を渡していません。 – Brandon

+6

おそらく 'File.WriteAllLines'ではなく' File.ReadAllLines'が必要でしょうか? –

+0

私はディレクトリにこのコード 'File.WriteAllLines'を作成しようとしていました。 –

答えて

1

このようなタスクを実装する場合は、Linqを試してみてください。結果マテリアライズ

    1. 読むにファイル
    2. ライン
    3. をフィルタリング(ちょうどあなたのケースに分割)キーと値として各行を表現あなたは持っています辞書

    何かこのように:結果

    としてあなたがDictionary<string, string[]>をしたい場合は

    var dictionary = File 
        .ReadLines("settings.cfg") 
        .Where(line => !line.StartWith("/") && line.Contains(":")) 
        .Select(line => line.Split(new char[] {':'})) 
        .ToDictionary(items => items[0], items => items[1]); 
    

    "どのようにしてstring[]内容を実装するのでしょうか?"

    あなたがしなければならないすべては最後の行を変更することです:

    var dictionary = File 
        .ReadLines("settings.cfg") 
        .Where(line => !line.StartWith("/") && line.Contains(":")) 
        .Select(line => line.Split(new char[] {':'})) 
        .ToDictionary(items => items[0], items => items.Skip(1).ToArray()); 
    

    編集:ファイルに既存のコレクションを保存したい場合は、File.WriteAllLinesを経由して右の構文は

    です
    string[] SaveStrings = ... 
    
        File.WriteAllLines("settings.cfg", SaveStrings); 
    
  • +0

    私が使ったプロジェクトのいくつかの設定を保存するためにWriteAllLinesにテキストファイルを追加したいという問題を見つけました File.WriteAllLines(" settings.cfg "); –

    +0

    これは私の解決策でした。 string [] savesettings = {"string1"、 "string2"、 "etc"}; File.WriteAllLines( "settings.cfg"、savesettings); –

    関連する問題