我使用了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(每两个数字之间有两个空格)时,它也不起作用
在上面两个例子中,我得到了一个未处理的异常。
我该如何解决?
谢谢!
答案 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();