2017-06-14 2 views
1

/*このコードは正常に動作しますが、特定の列にカンマが含まれていると問題に直面しています。そのコンマは避けたい別の列に分割されます。*/CでのカンマのためにCSVをjsonに変換することができません#

/* "var split = line.Split( '、');"それは文章の間で見つかったカンマを無視します*/

/*例えば:TST2.0_Performance_Re次のタスク - 右コンテキストメニューをクリックし、左に移動/右は/

//コンテキストメニューの後にカンマが得る*移動別の列に分けられる

[HttpGet] 
    public JsonResult GetProductDetail (string ProductName) 
    { 

     string csvurl = WebConfigurationManager.AppSettings["csvfileurl"]; 

     var lines = System.IO.File.ReadAllLines(csvurl).Skip(1); 

     List<Product> prdt = new List<Product>(); 
     foreach (string line in lines) 
     { 
      Product c1 = new Product(); 


      var split = line.Split(','); 
      c1.ID = Int32.Parse(split[0]); 
      c1.Area_Path = split[1]; 
      c1.IterationPath = split[2]; 
      c1.State = split[3]; 
      c1.Reason = split[4]; 
      c1.Priority = Int32.Parse(split[5]); 
      c1.Severity = split[6]; 
      c1.Tags = split[7]; 
      c1.Title = split[8]; 
      c1.CreatedDate = split[9]; 
      c1.CreatedBy = split[10]; 
      c1.ResolvedDate = split[11]; 
      c1.ResolvedBy = split[12]; 
      c1.ClosedDate = split[13]; 
      c1.AssignedTo = split[14]; 
      prdt.Add(c1); 




     } 
+0

に分割して逃げることができるかもしれません。すなわち 'Menu 'のすべてのインスタンスを' Menu'に置き換えてください。 –

+0

問題は、csvファイルが自動生成されており、値を変更できないということです。プロセス全体が自動化されています。コンマを手動で削除しても問題なく動作します – ashwin1014

+0

コードに「インラインクリーン」を入れることができます。コマンドラインツールを使用して検索と置換を行うことができます。ファイルを消去するには多くの方法があります。あなたの本当の問題は、コンマが有効かどうかを_automatically_認識する方法がないことです。 –

答えて

0

これはあなたが探しているものですか?お役に立てれば。

var split = Regex.Split(line, ",(?=(?:[^\"]*\"[^\"]*\")*[^\"]*$)"); 

は、正規表現の名前空間これらは簡単ではありませんようにエッジ-例すべてを扱うCSVパーサを書く

using System.Text.RegularExpressions; 
+0

ありがとうございます。それを解決した – ashwin1014

+0

素晴らしい!お力になれて、嬉しいです。 – Ajinkya

0

を使用することを忘れないでください。

CsvHelperのような既存の解析ライブラリを使用することを検討する必要があります。

コンマを含むケースに引用符があるとしますか?引用符がない場合、あなたは困っています。例:

"1","John's toes","My first, bread" 

あなたはケースを識別できる場合は、データを事前にきれいにすることができる.Split(new[] { "\",\"" }, StringSplitOptions.None)

関連する問題