2015-11-29 45 views
0

我試圖將一個字符串拆分成子部分傳遞到linq數據庫,但我想出了一個問題。該文件是一個.csv文件,以便它的由逗號例如分裂:分割字符串使用String.Split()

1,MS,Aleshia,Tomkiewicz,14泰勒聖,聖Stephens Ward,Kent,CT2 7PP,01835-703597,atomkiewicz @ hotmail.com。

但是一些數據包含像縣/地址數據字段逗號分割了不過逗號我不希望它拆我希望它保存這些數據都在一起,例如地址:倫敦,溫網。

im using this code currently to do the chopping: 


public static List<string> ReturnCSVFromWeb(string url) 
     { 
      System.Net.WebClient client = new WebClient(); 
      string CSVContent = client.DownloadString(url); 

      List<string> splitted = new List<string>(); 
      string csvFile = CSVContent; 
      string[] tempStr; 

      tempStr = csvFile.Split(',','\n'); 

      foreach (string item in tempStr) 
      { 
       if (!string.IsNullOrWhiteSpace(item)) 
       { 
        splitted.Add(item); 
       } 
      } 

      return splitted; 

     } 
+3

請** [停止滾動您自己的CSV分析器](http://www.secretgeek.net/csv_trouble)**。還要尊重數據的標準格式。如果「倫敦,溫布爾登」不應該分開,你似乎沒有CSV,而是一些自定義格式。您應該首先考慮如何正確編碼數據。 –

+0

不允許使用第三方軟件標準.Net庫 –

+2

然後最好準備下降到深淵。請不要用'CSV'來標記你的問題,因爲很明顯這不是你輸入的格式。而是指定你有一些自己發明的自定義格式,並確保在嘗試解析它之前非常精確地定義這種格式。 –

回答

6

除非事先知道哪些數據包含逗號,否則無法解決此問題。一個更好的選擇將是有在CSV每個條目由雙引號包圍,然後用逗號

+0

嗯是這麼認爲的,但我們不能改變數據作爲課程的一部分:/ –

+0

抱歉壞描述csv文件是這樣的:14,先生,Niesha,布魯赫,24博爾頓街「Broxburn,阿普霍爾和Winchburg」,西洛錫安,EH52通知「Broxburn,阿普霍爾」如何在地址 –

+0

注意逗號該字符串是如何用雙引號。這使得它成爲標準的CSV。你爲什麼要在原文中省略引號?你沒有看到它們是重要的嗎? –

2

分隔如果行數是固定的(M),只有地址欄有逗號,你可以這樣做:

  1. 分離行
  2. 拍攝第N1列地址之前
  3. 就拿去年N2列地址
  4. 後以從中M-N1-N2列,加入他們的行列 - 這是一個地址
+3

在假定只有一個列包含值逗號 – Rotem

+0

@Rotem是,職高,更新的答案 – Backs

+0

抱歉壞描述CSV文件是這樣的:14,先生,Niesha,布魯赫,24博爾頓街」 Broxburn,阿普霍爾和Winchburg「西洛錫安,EH52通知如何‘Broxburn,阿普霍爾’在用'地址 –