0

我想拆分一个字符串

输入 :

ABCDEFGHI

输出 :

ABC, DEF, GHI

一种方法是使用 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
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的帮助下

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

还有一个(没有 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

使用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 回答