web-dev-qa-db-ja.com

C#文字列を分割して結合する

可能性のある複製:
最初に分割してから文字列のサブセットを結合

文字列を配列に分割し、最初の要素を取り出して(使用して)、配列の残りの部分を別の文字列に結合しようとしています。

例:

theString = "Some Very Large String Here"

次のようになります:

theArray = [ "Some", "Very", "Large", "String", "Here" ]

次に、変数の最初の要素を設定し、後で使用します。

次に、配列の残りを新しい文字列に結合します。

そうなると:

firstElem = "Some";
restOfArray = "Very Large String Here"

最初の要素にtheArray[0]を使用できることは知っていますが、配列の残りの部分を新しい文字列に連結するにはどうすればよいですか?

67
Gaui

string.Splitおよびstring.Joinを使用できます。

string theString = "Some Very Large String Here";
var array = theString.Split(' ');
string firstElem = array.First();
string restOfArray = string.Join(" ", array.Skip(1));

常に最初の要素のみを分割したいことがわかっている場合は、次を使用できます。

var array = theString.Split(' ', 2);

これにより、参加する必要がなくなります。

string restOfArray = array[1];
160
Reed Copsey

さて、ここに私の「答え」があります。 String.Split は、分割すべき多くのアイテムを保持するように指示できるという事実を使用します(他の答えに欠けていることがわかりました)。

string theString = "Some Very Large String Here";
var array = theString.Split(new [] { ' ' }, 2); // return at most 2 parts
// note: be sure to check it's not an empty array
string firstElem = array[0];
// note: be sure to check length first
string restOfArray = array[1];

これはSubstringメソッドと非常によく似ていますが、手段が異なります。

21
user166390

文字列を分割して結合することもできますが、部分文字列を使用しないのはなぜですか?次に、文字列を5つの部分に分割して再結合するのではなく、1つの分割のみになります。最終結果は同じですが、サブストリングはおそらく少し高速です。

string lcStart = "Some Very Large String Here";
int lnSpace = lcStart.IndexOf(' ');

if (lnSpace > -1)
{
    string lcFirst = lcStart.Substring(0, lnSpace);
    string lcRest = lcStart.Substring(lnSpace + 1);
}
6
Sheridan Bulger