2 回答
TA贡献1876条经验 获得超7个赞
Linq 可以简化代码。小提琴版本有效
想法:我有 a chunkSize= 2 作为您的要求,然后,Take索引 (2,4,6,8,...) 处的字符串将字符块和Join它们设置为string.
public static IEnumerable<string> ProperFormat(string s)
{
var chunkSize = 2;
return s.Where((x,i) => i % chunkSize == 0)
.Select((x,i) => s.Skip(i * chunkSize).Take(chunkSize))
.Select(x=> string.Join("", x));
}
有了输入,我就有了输出
Idno1 -->
Id
no
1
Id n o 2 -->
Id
n
o
2
TA贡献1900条经验 获得超5个赞
在这种情况下,Linq 确实更好。您可以使用此方法 - 它允许将字符串拆分为任意大小的块:
public static IEnumerable<string> SplitInChunks(string s, int size = 2)
{
return s.Select((c, i) => new {c, id = i / size})
.GroupBy(x => x.id, x => x.c)
.Select(g => new string(g.ToArray()));
}
但是,如果您必须使用正则表达式,请使用以下代码:
public static IEnumerable<string> SplitInChunksWithRegex(string s, int size = 2)
{
var regex = new Regex($".{{1,{size}}}");
return regex.Matches(s).Cast<Match>().Select(m => m.Value);
}
- 2 回答
- 0 关注
- 211 浏览
添加回答
举报