如果您的格式必须是一个字母后跟一个冒号,然后是一个浮点数,用逗号分隔条目:
string patternDelim = @"([A-Z]):"; // split on 'X:'
// @"([A-Z]+):" // split on 'ABC:'
// @"([A-Z][A-Z0-9]*):" // split on 'A1B2C3:'
string[] values = Regex.Split(input, patternDelim);
因为我们使用了一个捕获组作为分隔符,所以它最终会出现在我们的输出中。所以,在这一点上,我们已经将输入分割成这样的东西:
A
1,5 ,
B
2,44,
C
3,54,
D
5,11
现在我们只需要将它们提取到它们的实际数据对中:
Dictionary<string, string> pairs = new Dictionary<string, string>();
for (int ii = 0; ii < values.Length; ++ii)
{
// empty values are skipped
if (values[ii].Length == 0) continue;
string value = values[ii + 1].Trim()
.TrimEnd(','); // remove any trailing commas
pairs.Add(values[ii], value.TrimEnd());
ii++; // use two each time
}
这将产生一个键值对字典,如下所示:
A = 1,5
B = 2,44
C = 3,54
D = 5,11
您可以根据需要使用适当的CultureInfo
或NumberFormatInfo
. 请注意,这也适用于所有形式的小数分隔符,即使存在数千个分隔符:
Input = A: 1.000,5 ,B:2,44,C: 3,54e+38,D: -,11
A = 1.000,5
B = 2,44
C = 3,54e+38
D = -,11