C#从字符串行中提取字符串和双精度字符

问题描述 投票:-3回答:2

我有一行需要从中提取名称和该名称的结果(双精度)。

该行看起来像这样:

James: 8, John: 8, Jasmin: 12, Igor: 1.54, Garry: 0, Gabe: 0.12, Lauren: 0, Grace: 81.31

我需要每个人作为名称和金额的数组。

我尝试使用正则表达式,但失败了。非常感谢您的协助。

c# string text-extraction
2个回答
2
投票

正如评论所说,您不需要正则表达式,只需拆分即可。像这样的作品:

string str = "James: 8, John: 8, Jasmin: 12, Igor: 1.54, Garry: 0, Gabe: 0.12, Lauren: 0, Grace: 81.31";
var values = str.Split(',');
(string name, double value)[] result = new (string, double)[values.Length];
for (int i = 0; i < values.Length; i++)
{
    var splittedValue = values[i].Split(':');
    result[i] = (splittedValue[0], Double.Parse(splittedValue[1], CultureInfo.InvariantCulture));
}

0
投票

由于该行是常规行,您可以一次拆分一下:

string str = "James: 8, John: 8, Jasmin: 12, Igor: 1.54, Garry: 0, Gabe: 0.12, Lauren: 0, Grace: 81.31";

var values = str.Split(',',':');
(string name, double value)[] result = new (string, double)[values.Length/2];
for (int i = 0; i < values.Length; i+=2)
    result[i/2] = (values[i].Trim(), Convert.ToDouble(values[i+1]));
© www.soinside.com 2019 - 2024. All rights reserved.