如何在c#中用双引号分割逗号?

时间:2013-07-09 11:02:46

标签: c# csv

string strExample = 
"\"10553210\",\"na\",\"398,633,000\",\"20130709\",\"20130502\",\"20120724\",";

如何使用","

拆分字符串

我需要一个像

这样的答案
string[] arrExample = YourFunc(strExample);       
arrExample[0] == "10553210";       
arrExample[1] == "na";
arrExample[2] == "398,633,000";
...

with split option。

提前致谢

9 个答案:

答案 0 :(得分:6)

这是一种简单的方法,

using Microsoft.VisualBasic.FileIO;

IList<string> arrExample;
using(var csvParser = new TextFieldParser(new StringReader(strExample))
{
    fields = csvParser.ReadFields();
}

答案 1 :(得分:3)

你可以分开&#34;,&#34; ,你需要清理的第一个和最后一个条目&#34;在最后和第一个条目中:

string[] arr = strExample .Split(new string[] { "\",\"" },
               StringSplitOptions.None);

//remove the extra quotes from the last and the first entry
arr[0] = arr[0].SubString(1,arr[0].Length - 1);
int last = arr.Length - 1;
arr[last] = arr[last].SubString(0,arr[last].Length - 1);

答案 2 :(得分:3)

您可以不用逗号“,”分割整个字符串“\”,\“”。 不要忘记修剪前导和尾随引号“

 String strExample = "\"10553210\",\"na\",\"398,633,000\",\"20130709\",\"20130502\",\"20120724\"";
 string[] arrExample = St.Trim('"').Split(new String[] {"\",\""}, StringSplitOptions.None);

答案 3 :(得分:0)

string[] arrExample = strExample.Split(",");

会这样做,但你的代码不会编译。我认为你的意思是:

string strExample = "10553210,na,398,633,000,20130709,20130502,20120724";

如果这不是您的意思,请更正问题。

答案 4 :(得分:0)

假设你的意思是:

string strExample = "\"10553210\",\"na\",\"398,633,000\",\"20130709\",\"20130502\",\"20120724\"";

Split然后Select子字符串:

string[] parts = strExample.Split(',').Select(x => x.Substring(1, x.Length - 2)).ToArray();

结果:

Result

答案 5 :(得分:0)

strExample.Split(',');

如果要在示例字符串中包含双引号,则需要转义双引号。

答案 6 :(得分:0)

使用Jodrell的例子

  private string[] SplitFields(string csvValue)
  {
     //if there aren't quotes, use the faster function
     if (!csvValue.Contains('\"') && !csvValue.Contains('\''))
     {
        return csvValue.Trim(',').Split(',');
     }
     else
     {
        //there are quotes, use this built in text parser
        using(var csvParser = new Microsoft.VisualBasic.FileIO.TextFieldParser(new StringReader(csvValue.Trim(','))))
        {
           csvParser.Delimiters = new string[] { "," };
           csvParser.HasFieldsEnclosedInQuotes = true;
           return csvParser.ReadFields();
        }
     }
  }

答案 7 :(得分:0)

这对我有用

Rebuild Schedulers

答案 8 :(得分:-1)

你可以这样做..

string stringname= "10553210,na,398,633,000,20130709,20130502,20120724";
 List<String> asd = stringname.Split(',');

或者如果你想要数组那么

array[] asd = stringname.Split(',').ToArray;