2011-12-22 8 views
-4

文字列型の配列を複数の配列に均等に分割する方法。例えば、

string [] input = {"a"、 "b"、 "c"、 "d"、 "e"、 "f"}
{string [] output = "a"、 "b" 、 "C"、 "" //初めて 列[]出力= "D"、 "E"、 "F"、 "" //第timetime}C#の分割配列

+2

あなたが何をしようとしたのですか?どのような正確にあなたは困難を抱えていますか? – Oded

+3

マジック8ボールには「長さ」と「部分文字列」と書かれていますが、「起こりうる」と言えるかもしれません... –

+1

私はOPがアルゴリズムを尋ねていると思います。いくつかの異なる構成(さまざまな長さの構成部分)に分割することができます。私はそれがあなたよりも深い疑問だと思います。 –

答えて

1
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(); 
} 
+1

あなたは慎重に質問を読んでいませんでした。文字列に数字を入力すると、数字の長さである部分文字列を取得する必要があります。 – Oded

+0

@Odedはいあなたは正しいです..私は私の答えを採用しました – Matten

1

いくつかの時間前、私はEnumerable#each_sliceを実現しましたあなたが望むものを得るためにそれを使うことができると思われます。その後

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); 

が、結果はあなたが

編曲:{文字列を取得するためにも

var arr = res.Select(c => String.Join("", c)).ToArray(); 

たい場合がありますIEnumerable<char>IEnumerableであるため、 [2]}
[0]: "12345"
[1]: "67890"