在C中拆分数组#
问题描述:
如何将一个字符串类型的数组平分为多个数组。
例如。
string [] input = {“a”,“b”,“c”,“”,“d”,“e”,“f”}
动态设置{string [] output =“a”,“b” , “C”, “” //第一次 串[]输出= “d”, “E”, “F”, “” //第二timetime}在C中拆分数组#
答
String[] splitString(int len, string input)
{
int idx = 0;
List<string> ret = new List<string>();
while(idx < input.Length)
{
if (idx+len > input.Length)
ret.Add(input.Substring(idx));
else
ret.Add(input.Substring(idx,len));
idx+=len;
}
return ret.ToArray();
}
答
前一段时间我实施Enumerable#each_slice
从C#中的Ruby开始,似乎你可以使用它来获得你想要的。
static class ExtentionsMethods
{
public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> seq, int size)
{
while (seq.Any())
{
yield return seq.Take(size);
seq = seq.Skip(size);
}
}
}
然后你只需
var str = "1234567890";
var res = str.Split(5);
,但由于结果是IEnumerable<char>
的IEnumerable
你可能想也
var arr = res.Select(c => String.Join("", c)).ToArray();
获得
改编{串[2]}
[0]: “12345”
[1]: “67890”
那你试试?你有什么困难? – Oded 2011-12-22 10:20:39
魔术8球说“长度”和“子串”,但它可能会说“它可能发生”... – 2011-12-22 10:22:01
我认为OP是要求一种算法,他可以适用于任何情况下,当你有字符串,可以被分成许多不同的配置(不同长度的组成部分)。我认为这是一个比你想象的更深的问题。 – 2011-12-22 10:33:37