MSDNによると、オーバーロードされたバージョンのメソッドを使用できますsplit
。
public string[] Split( char[] セパレーター、int カウント、StringSplitOptions オプション )
パラメーター
separator 型: System.Char[] この文字列の部分文字列を区切る Unicode 文字の配列、区切り文字を含まない空の配列、または null。
count 型: System.Int32 返される部分文字列の最大数。
options 型: System.StringSplitOptions StringSplitOptions.RemoveEmptyEntries は、返された配列から空の配列要素を省略します。または StringSplitOptions.None を使用して、返される配列に空の配列要素を含めます。
戻り値
型: System.String[] 区切り文字で 1 つ以上の文字で区切られた、この文字列内の部分文字列を要素に含む配列。詳細については、「備考」セクションを参照してください。
したがって、次のようになります。
String str = "A,B,C,D,E,F,G,H,I";
String[] str2 = str.Split(new Char[]{','}, 5, StringSplitOptions.RemoveEmptyEntries);
System.Console.WriteLine(str2.Length);
System.Console.Read();
印刷します:5
編集:さらに調査すると、count
パラメーターは分割がいつ停止するかを指示するだけのようです。文字列の残りは最後の要素に保持されます。
したがって、上記のコードは次の結果をもたらします: [0] = A, [1] = B, [2] = C, [3] = D, [4] = E,F,G,H,I
、これはあなたが求めているものではありません。
これを修正するには、次のようにする必要があります。
String str = "A\nB\nC\nD\nE\nF\nG\nH\nI";
List<String> myList = str.Split(new Char[]{'\n'}, 5, StringSplitOptions.RemoveEmptyEntries).ToList<String>();
myList[myList.Count - 1] = myList[myList.Count - 1].Split(new Char[] { '\n' })[0];
System.Console.WriteLine(myList.Count);
foreach (String str1 in myList)
{
System.Console.WriteLine(str1);
}
System.Console.Read();
上記のコードは、最初の 5 つ (この場合は 1000) の要素のみを保持します。したがって、必要に応じて、ダーリンのソリューションの方がクリーンであると思います。