在开发评分组件时,我们有一个棘手的难题需要解决。我们有一个 C# 程序,我们从 Oracle 数据库中获取分数,格式为
字段名
字段值
我们将它们解析为两个逗号分隔的字符串。
我们有一个要求,当我们得到一个像“LOW@HIGH”这样一个字段值为“11@21”的字段名时,我们希望将它放入另一个格式为 LOW=11,HIGH=21 的变量中。
首先解析输入:
var parts = input.Split('@');
var i1 = int.Parse(parts[0]);
var i2 = int.Parse(parts[1]);
接下来计算结果:
return "LOW=" + i1 + ",HIGH=" + i2;
如果你把它分成这两个步骤,问题就变得容易了。
还有一个替代方法,它向您介绍了非常有用的 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
这是一个快速而有趣的练习,但我想知道为什么它会像这样非规范化?!