0

スコアリング コンポーネントの開発には、解決しなければならないトリッキーなパズルがあります。次の形式で Oracle データベースからスコアを取得する C# プログラムがあります。

フィールド名

フィールド値

それらを 2 つのカンマ区切りの文字列に解析します。

フィールド値が「11@21」の「LOW@HIGH」のようなフィールド名を取得した場合、それを 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;

この2段階に分ければ問題は簡単になります。

于 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 ) ) );
}

すべての検証チェックはあなた次第です...

「フィールド名」フィールドに3つ以上のフィールド名が含まれている場合、このメソッドは機能することに注意してください。たとえば、フィールド名「LOW @ AVERAGE@HIGH」とフィールド値「11@15 @ 21」は、次のようになります。LOW=11,AVERAGE=15,HIGH=21

早くて楽しい運動でしたが、なぜこんな風に非正規化されているのか気になります!

于 2012-09-12T20:40:47.650 に答える