C# 拆分字符串,以逗号分隔,但不拆分双精度值

C# 拆分字符串,以逗号分隔,但不拆分双精度值,c#,C#,这是我从csv获得的字符串: string input = "Volume,447,\"4,325\",142,144"; 我在阵列行中需要什么: 447 4,325 142 144 我尝试的是: string[] volumes; if (input.Contains(",\"")) // if they're all double value, it works volumes = input.Split(new[] {",\""}, StringSplitOptions.No

这是我从csv获得的字符串:

string input = "Volume,447,\"4,325\",142,144";
我在阵列行中需要什么:

447
4,325
142
144
我尝试的是:

string[] volumes;
if (input.Contains(",\"")) // if they're all double value, it works
     volumes = input.Split(new[] {",\""}, StringSplitOptions.None);
else
     volumes= input.Split(','); // if they're all integer value it works
else
     // what to do if they have both double and integer?

您需要引用Microsoft.VisualBasic(如果您使用C#编写代码,则为事件)来编译以下代码

    private string[] ParseCsv(string line)
    {
        var parser = new TextFieldParser(new StringReader(line));
        parser.TextFieldType = FieldType.Delimited;
        parser.SetDelimiters(",");
        while (!parser.EndOfData)
        {
            return parser.ReadFields();
        }
        parser.Close();
        return new string[0];
    }

听起来你可以用一个像样的CSV解析器。。。如果你从JSON得到这个字符串,为什么不完全反序列化它而不是解析字符串呢?或者,如果您为其提供原始JSON,它可能会更简单us@Uriil天哪,对不起,我的字符串来自csv,而不是csvjson@JonSkeet是的,你说得对。我要这么做。@Gui:这里有一个简单但有效的方法,也支持引用字符:您应该避免使用相同的字段和小数分隔符。