0

サンプル文字列「|」の2つのレコードを次に示します。新しいレコードまたは行を示す「、」はペアを区切り、「=」はキーと値を区切ります。以下のコードは、単一の行またはレコードであるが、多くの行(この場合は2行)では機能しない場合に機能します。それぞれ3つの要素を持つ2つの行を取得するために、この作業を行うには何が必要ですか?

string s1 = "colorIndex=3,font.family=Helvicta,font.bold=1|colorIndex=7,font.family=Arial,font.bold=0";
string[] t = s1.Split(new[] { '(', ')' }, StringSplitOptions.RemoveEmptyEntries);

Dictionary<string, string> dictionary =
                 t.ToDictionary(s => s.Split('=')[0], s => s.Split('=')[1]);
4

2 に答える 2

2

これを試して:

var result = input.Split('|')
                  .Select(r => r.Split(',')
                                .Select(c => c.Split('='))
                                .ToDictionary(x => x[0], x => x[1]));
于 2012-09-19T02:14:46.637 に答える
0

あなたが始めたいようです

class Font {
    public int ColorIndex { get; set; }
    public string FontFamily { get; set; }
    public bool Bold { get; set; }
}

それで:

var fonts = s1.Split('|')
  .Select(s => {
      var fields = s.Split(',');
      return new Font {
          ColorIndex = Int32.Parse(fields[0].Split('=')[0]),
          FontFamily = fields[1].Split('=')[1],
          Bold = (bool)Int32.Parse(fields[2].Split('=')[2])
      };
  });
于 2012-09-19T02:19:07.853 に答える