スコアリング コンポーネントの開発には、解決しなければならないトリッキーなパズルがあります。次の形式で Oracle データベースからスコアを取得する C# プログラムがあります。
フィールド名
フィールド値
それらを 2 つのカンマ区切りの文字列に解析します。
フィールド値が「11@21」の「LOW@HIGH」のようなフィールド名を取得した場合、それを 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;
この2段階に分ければ問題は簡単になります。
そして、非常に便利なZip拡張メソッドを紹介する代替方法...
string Parse(string fieldName, string fieldValue)
{
return string.Join( ",",
fieldName.Split( '@' )
.Zip( fieldValue.Split( '@' ),
( name, value ) => string.Concat( name, "=", value ) ) );
}
すべての検証チェックはあなた次第です...
「フィールド名」フィールドに3つ以上のフィールド名が含まれている場合、このメソッドは機能することに注意してください。たとえば、フィールド名「LOW @ AVERAGE@HIGH」とフィールド値「11@15 @ 21」は、次のようになります。LOW=11,AVERAGE=15,HIGH=21
早くて楽しい運動でしたが、なぜこんな風に非正規化されているのか気になります!