0

在开发评分组件时,我们有一个棘手的难题需要解决。我们有一个 C# 程序,我们从 Oracle 数据库中获取分数,格式为

字段名

字段值

我们将它们解析为两个逗号分隔的字符串。

我们有一个要求,当我们得到一个像“LOW@HIGH”这样一个字段值为“11@21”的字段名时,我们希望将它放入另一个格式为 LOW=11,HIGH=21 的变量中。

4

2 回答 2

2

首先解析输入:

var parts = input.Split('@');
var i1 = int.Parse(parts[0]);
var i2 = int.Parse(parts[1]);

接下来计算结果:

return "LOW=" + i1 + ",HIGH=" + i2;

如果你把它分成这两个步骤,问题就变得容易了。

于 2012-09-12T20:27:34.067 回答
0

还有一个替代方法,它向您介绍了非常有用的 Zip 扩展方法......

string Parse(string fieldName, string fieldValue)
{
  return string.Join( ",",
           fieldName.Split( '@' )
             .Zip( fieldValue.Split( '@' ),
               ( name, value ) => string.Concat( name, "=", value ) ) );
}

所有验证检查都由您决定...

请注意,如果“字段名称”字段包含两个以上的字段名称,则该方法有效。例如,字段名称“LOW@AVERAGE@HIGH”和字段值“11@15@21”会给你LOW=11,AVERAGE=15,HIGH=21

这是一个快速而有趣的练习,但我想知道为什么它会像这样非规范化?!

于 2012-09-12T20:40:47.650 回答