【问题标题】:Splitting a String using String.Split()使用 String.Split() 拆分字符串
【发布时间】:2015-11-29 15:52:34
【问题描述】:

我试图将字符串拆分为子部分以传递到 linq 数据库,但我遇到了一个问题。该文件是一个 .csv 文件,因此用逗号分隔:

1,Ms,Aleshia,Tomkiewicz,14 Taylor St,St.斯蒂芬斯病房,肯特,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;

        }

【问题讨论】:

  • Stop Rolling Your Own CSV Parser。还要尊重数据的标准格式。如果不应该分隔 London,Wimbledon,您似乎没有 CSV,而是一些自定义格式。您应该首先考虑如何正确编码您的数据。
  • 不允许使用仅标准的 .Net 库的 3rd 方软件
  • 那么最好做好下到深渊的准备。请不要用CSV 标记您的问题,因为显然这不是您输入的格式。而是指定您有一些某人发明的自定义格式,并确保您在尝试解析之前非常精确地定义了这种格式。
  • 您确定地址值不只是单个列吗?
  • 对不起,我的意思是我们在一个字段中有这样的地址:Broxburn、Uphall 和 Winchburg,用逗号分隔

标签: c# string csv split


【解决方案1】:

除非您提前知道哪些数据包含逗号,否则无法解决此问题。更好的选择是将 csv 中的每个条目用双引号括起来,然后用逗号分隔

【讨论】:

  • hmmm 是这么认为的,但我们不允许在课程作业中更改数据:/
  • 抱歉,csv 文件描述不正确:14,Mr,Niesha,Bruch,24 Bolton St,"Broxburn, Uphall and Winchburg",West Lothian,EH52 请注意“Broxburn , Uphall”地址中有逗号
  • 请注意该字符串是如何用双引号括起来的。这使其成为标准 CSV。为什么你在原帖中省略了引号?你不认为它们很重要吗?
【解决方案2】:

如果行数是固定的(M)并且只有地址列有逗号,你可以这样做:

  1. 拆分行
  2. 在地址前取N1
  3. 在地址后面取最后一个N2
  4. 从中间取出 M-N1-N2 列,加入它们 - 这是一个地址

【讨论】:

  • 这当然假设只有一列的值包含逗号
  • 抱歉,csv 文件的描述不正确:14,Mr,Niesha,Bruch,24 Bolton St,"Broxburn, Uphall 和 Winchburg",West Lothian,EH52 请注意“Broxburn , Uphall”地址中有逗号
  • @hpearson 首先由" 分割 - 你会得到一个地址,然后由, 分割其他部分
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-08-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-26
  • 1970-01-01
相关资源
最近更新 更多