0

文字列を分割したかった

入力:

ABCDEFGHI

出力:

ABC, DEF, GHI

1 つの方法は、For ループを使用することです。

string str = "ABCDEFGHI";

List<string> lst = new List<string>();

string temp = "";

for(int i = 0; i < str.Length; i++)
{
    temp = str[i].Tostring();

    if((i + 1) % 3 == 0)
    {
        lst.Add(temp);
        temp = "";
    }
}

string final_str = string.Join(", ", lst);

しかし、それを使用してそれを行う方法はLINQ?

4

5 に答える 5

0

MoreLinqの助けを借りて

List<string> lst = str.Batch(3).Select(s => String.Join("",s)).ToList();
于 2012-05-18T11:00:19.860 に答える
0

そしてもう1つ(MoreLinqなし ):

var str = "ABCDEFGHI";
var tmp = str.Select((i, index) => new { i, index })
             .GroupBy(g => g.index / 3, e => e.i)
             .Select(g => String.Join("", g));
var final_string = String.Join(", ", tmp);
于 2012-05-18T11:01:30.330 に答える
0
var str = "ABCDEFGHI";

var result = testStr.Select(s => testStr.IndexOf(s))
                   .Where(i => i%3 == 0)
                   .Select(i => testStr.Substring(i,3))
                   .Aggregate("", (a,s) => a += s + ",");
于 2012-05-18T10:58:13.223 に答える
0

MoreLinq.Batch の使用

var result = str.Batch(3);

結果の型は IEnumerable> であり、ToArray を使用して IEnumerable< char[] > にすることができます

編集一見しただけで最後の結合ステートメントを忘れていました

var finalStr = String.Join(",",str.Batch(3).Select(x=>new String(x.ToArray())))
于 2012-05-18T11:02:21.080 に答える
-1
String.Join("", str.Select((x, i) => (i + 1)%3 == 0 ? x + " " : x.ToString()))
于 2012-05-18T10:59:47.363 に答える