2

これを変換できるかどうか疑問に思います:

"abc , 123; xyz, 100; go, 9; move, 50;"

これに:

{ { "abc", "123" } , { "xyz" , "100" } , { "go" , "9" } , { "move" , "50" } }

(の配列string[2]) と 1 つの長い連結LINQステートメント ?

編集:

from-in-where-selectステートメントシリーズが好ましい

編集2:

struct { string, int }また、入力文字列を array ofまたは someのような複合型に変換する方法もありますかTuple<string,int>?

お気に入り:

{
    new Tuple<string, int>() { "abc", 123 } ,
    new Tuple<string, int>() { "xyz" , 100 } ,
    new Tuple<string, int>() { "go" , 9 } ,
    new Tuple<string, int>() { "move" , 50 }
}

?

4

2 に答える 2

2

String.SplitabdString.Trimと LINQ を使用しますselect

var result = (from keyValuePair in myString.Split(';')
              where keyValuePair.Trim() != ""
              select (from t in keyValuePair.Split(',')
                      select t.Trim()).ToArray()).ToArray();()

アップデート

の配列を持つにはKeyValuePair<string, int>

var result = (from keyValuePair in myString.Split(';')
              where keyValuePair.Trim() != ""
              let splittedKeyValuePair = keyValuePair.Split(',')
              select new KeyValuePair<string, int>(splittedKeyValuePair[0].Trim(), int.Parse(splittedKeyValuePair[1]))).ToArray();

持つためにDictionary<string, int>

var result = (from keyValuePair in myString.Split(';')
              where keyValuePair.Trim() != ""
              select keyValuePair.Split(',')).ToDictionary(kvp => kvp[0].Trim(), kvp => int.Parse(kvp[1]))
于 2013-02-03T11:40:16.420 に答える
1

これを試して:

string str = "abc , 123; xyz, 100; go, 9; move, 50;";

stringses = str.Split(new[] {';'}, StringSplitOptions.RemoveEmptyEntries)
                                        .Select(s => s.Split(new[] {','}))
               .ToArray();
于 2013-02-03T11:42:15.307 に答える