2017-05-09 11 views
-1

は、次の形式のCSVファイルを持つことはできません: a,bは元の形式で辞書に保存したCSVファイルを

ゴール辞書

問題で、このCSVファイルを保存することです:csvOneが最初としてこれを持っていますそれには格納されません。その結果として、フィールド

kfjdfdsdsd, second value 

aaaaaaa 
sdasdasdaasdasdfffw 

はすなわちのみ下記の一部が保存されます、元の形式です:

キー: ""、値は:

public void StoreInDictionary(string[] file, Dictionary<string, string> dictionary) 
     { 
      foreach (var line in file) 
      { 
       var cleansedLine = Regex.Replace(line, @"\s+", ""); 
       var commaIndex = cleansedLine.IndexOf(','); 
       var valueOne = cleansedLine.Substring(0, commaIndex + 1); 
       var valueTwo = cleansedLine.Substring(commaIndex + 1); 

       if (!dictionary.ContainsKey(valueOne)) 
       { 
        dictionary.Add(valueOne, valueTwo); 
       } 
      } 
     } 

P.S.:

私のコードをkfjdfdsdsd \ rを\を交換しようとしたn個すぎ、として出力するため

どうもありがとう

+0

はこれを見ている:http://stackoverflow.com/a/3508572/1845593 – user1845593

+0

@ user1845593同じ結果 – Teallaair9

+2

あなたはCSVを言うが、「kfjdfdsdsd」を使用して、試料が」doesnのを持ってあまりにしかし、この方法を試してみました、を含む。私はあなたの問題を理解していませんでした。あなたが持っていない空白行か事実か。そして、同じテキストの複数のキーがある場合、あなたがしたいことは何ですか? – user1845593

答えて

0

を動作しませんでした:これは何をしたいあなたを与える必要があります使用コード

public void StoreInDictionary(string[] file, Dictionary<string, string> dictionary) 
{ 
    foreach (var line in file) 
    { 
     var cleansedLine = Regex.Replace(line, @"\s+", ""); 
     var commaIndex = cleansedLine.IndexOf(','); 

     string valueOne = String.Empty; 
     string valueTwo = String.Empty; 

     if (commaIndex > 0) 
     { 
      valueOne = cleansedLine.Substring(0, commaIndex + 1); 
      valueTwo = !String.IsNullOrWhiteSpace(cleansedLine.Substring(commaIndex + 1)) ? 
         cleansedLine.Substring(commaIndex + 1) : 
         String.Empty; 
     } 

     if (!dictionary.ContainsKey(valueOne)) 
     { 
      dictionary.Add(valueOne, valueTwo); 
     } 
    } 
} 
0

以下

 key    value 
kfjdfdsdsd   second value 
aaaaaaa    (blank) 
sdasdasdaasdasdfffw (blank) 

。ちょっとしたメモ、複数の行があるかもしれません "、"私の解決策はそれに対処していません。

public void StoreInDictionary(string[] file, Dictionary<string, string> dictionary) 
{ 
    foreach (var line in file) 
    { 
     if (!string.IsNullOrWhiteSpace(line)) 
     { 
      string valueOne, valueTwo; 

      var idx = line.IndexOf(','); 

      if (idx >= 0) 
      { 
       valueOne = line.Substring(0, idx); 
       valueTwo = line.Substring(idx + 1); 
      } 
      else 
      { 
       valueOne = line; 
       valueTwo = string.Empty; 
      } 

      if (!dictionary.ContainsKey(valueOne)) 
      { 
       dictionary.Add(valueOne, valueTwo); 
      } 
     } 
    } 
} 
+0

解決策は、データが壊れてしまいます。つまり、ValueOneはValueTwoと連結されます – Teallaair9

+0

私はテストしましたが、私は同じテキストを持つ複数のキーがある場合に何をしたいのですか?あなたの例!問題が解決しない場合は、このソリューションで動作しない回線を用意してください – user1845593

関連する問題