[英]Using LINQ how to split string (not on character but on index)
I wanted to split a string 我想分割一个字符串
Input : 输入:
ABCDEFGHI
Output : 输出:
ABC, DEF, GHI
One way is by using For Loop. 一种方法是使用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);
But how to do that using LINQ
? 但是如何使用
LINQ
做到这一点?
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 + ",");
在MoreLinq的帮助下
List<string> lst = str.Batch(3).Select(s => String.Join("",s)).ToList();
using MoreLinq.Batch 使用MoreLinq.Batch
var result = str.Batch(3);
type of result is IEnumerable>, ToArray can be used to make it IEnumerable< char[] > 结果类型为IEnumerable>,可以使用ToArray使其成为IEnumerable <char []>
EDIT I forgot last join statement in the first glance 编辑我乍一看忘记了最后一个加入语句
var finalStr = String.Join(",",str.Batch(3).Select(x=>new String(x.ToArray())))
String.Join("", str.Select((x, i) => (i + 1)%3 == 0 ? x + " " : x.ToString()))
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.