将字符串拆分为三个双打

时间:2016-05-10 11:45:06

标签: c# string split

我使用了C#,我希望拆分文本包含3个以逗号和空格分隔的双打。

我做了:

double[] doubles = mystr.Trim().Split(new char[] { ' ', ',' })
                .Select(s => Convert.ToDouble(s))
                .ToArray();

当mystr = 33,44,55例如它工作正常(数字只用一个逗号分隔)

此外,当mystr = 33 44 55时,它工作正常(数字仅由一个空格分隔)

但是,当mystr = 33,44,55时,它不起作用(每两个数字之间用逗号后一个空格)

当mystr = 33 44 55(每两个数字之间有两个空格)时,它也不起作用

在上面两个例子中,我得到了一个未处理的异常。

我该如何解决?

谢谢!

3 个答案:

答案 0 :(得分:10)

您可以添加一个选项以删除拆分中的空条目:

var array = Array.ConvertAll(mystr.Split(new [] { ' ', ',' },
                             StringSplitOptions.RemoveEmptyEntries),
                             Convert.ToDouble);

答案 1 :(得分:1)

您可以使用var pattern = @"(\d+)((,\s*|\s+)|$)"; const int RegexTimeoutSeconds = 1; var matches = Regex.Matches(mystr, pattern, RegexOptions.None, TimeSpan.FromSeconds(RegexTimeoutSeconds)); var doubles = new List<double>(); foreach (Match match in matches) { var group = match.Groups[1]; var d = Convert.ToDouble(group.Value); doubles.Add(d); }

net use \\server\c$ $password /USER:$username
$service = Get-Service $serviceName -ComputerName $server

答案 2 :(得分:0)

只需尝试指定StringSplitOptions,然后使用StringSplitOptions.RemoveEmptyEntries删除空字符串..

    double[] doubles = mystr.Trim().Split(new char[] { ' ', ',' },StringSplitOptions.RemoveEmptyEntries)
            .Select(Convert.ToDouble)
            .ToArray();