文字列をsplit(' ')
上書きし、返された文字列の最初の要素をプルして、残りの文字列を取得したいと思います。
fe"THIS IS AN AMAZING STRING".split(' ');
これ以外のすべての単語を取得したい。これは:驚くべき文字列です
文字列はハードコードされているため、最初の単語と2番目の単語の間に常に少なくとも1つの空白があります
これを作る機能はありますか?ありがとうございました
試す
string X = "THIS IS AN AMAZING STRING";
string Y = (X.IndexOf ( " " ) < 0) ? string.Empty : X.Substring (X.IndexOf ( " " ) + 1); // Y = IS AN AMAZING STRING
コメントによると(IFX
は少なくとも1つのスペースを持つ有効な文字列であることが保証されています)、チェックなどを行わない単純なバージョン:
string Y = X.Substring (X.IndexOf ( " " ) + 1);
かなり良いオプションは、以下を使用することです。
string original = "THIS IS AN AMAZING STRING";
string[] split = original.Split(new []{' '}, 2);
string result = split[1];
結果の文字列だけが必要な場合は、次のように短くすることができます。
var result = original.Split(new []{' '}, 2)[1];
最大分割数をとるstring.Splitのオーバーロードを使用することにより、結合の必要性と余分なオーバーヘッドを回避できます。
var a = "THIS IS AN AMAZING STRING".Split(' ');
string amazing = String.Join(" ", a.Skip(1));
.NET 4より前の場合は、Skip呼び出しの最後に.ToArray()を固定する必要があります。これは、2番目のパラメーターとして列挙可能なString.Joinオーバーロードが.NET4で最初に追加されたためです。
これは一般的なケースではうまく機能しますが、常に最初の単語だけを削除したい場合は、Reedがコメントで指摘しているように、これを行うためのより良い方法があります。
var a = "THIS IS AN AMAZING STRING".Split(new char[] {' ' }, 2);
string amazing = a[1]; //Perhaps do a length check first if you are not sure there is a space in the original string.
Splitは最初のスペースが見つかるまで検索するだけで、2つの文字列のみで結果を作成できるため、これは大きな文字列に対してより優れたパフォーマンスを発揮します。また、特に長い文字列の場合、コストがかかる可能性のあるString.Joinを回避します。
Split
関数を使用しないでください-a )' '
最初のシンボルだけでなく、存在するすべてのシンボルを検索します。b)このアプローチでは、メモリ内で大量のデータをコピーする必要がありますが、これは文字列の操作がかなり遅くなります。
var a = "THIS IS AN AMAZING STRING";
string result;
var index = a.IndexOf(' ');
if (index == -1)
result = null;
else
result = a.Substring(index + 1);
質問のタイトルは文字列ではなく配列に言及しているため、ArraySegment
クラスに言及する価値があります。これにより、(新しい配列を作成してデータをコピーすることなく)配列の一部へのポインターを作成できます。
var a = new int[] { 0, 1, 2, 3 };
var segment = new ArraySegment<int>(a, 1, a.Length - 1);
非常に簡単に、次のことができます。
string input = "THIS IS AN AMAZING STRING";
string result = input.Substring(input.IndexOf(' ') + 1);
これは、指定している入力のタイプ(文字列の最初の2つの単語の間に常にスペースがある場合)では機能しますが、入力文字列にスペースがまったくない場合は、文字列全体が次のように返されます。は。
これを試して
string str = "THIS IS AN AMAZING STRING";
string firstString = str.Split(' ')[0]; //get the first string
string newStr = str.Replace(firstString + " ", ""); //remove the first string
//OR
string newStr = str.Remove(0, firstString.Length + 1);