94

可能重复:
首先拆分然后加入字符串的子集

我正在尝试将一个字符串拆分为一个数组,取出第一个元素(使用它),然后将数组的其余部分连接成一个单独的字符串。

例子:

theString = "Some Very Large String Here"

会成为:

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

然后我想在变量中设置第一个元素并稍后使用它。

然后我想将数组的其余部分加入一个新字符串。

所以它会变成:

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

我知道我可以使用theArray[0]第一个元素,但我如何将数组的其余部分连接到一个新字符串?

4

3 回答 3

200

您可以使用string.Splitstring.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];
于 2012-10-18T19:03:37.540 回答
24

好吧,这是我的“答案”。它使用的事实是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,只是方式不同。

于 2012-10-18T19:13:23.407 回答
7

您可以拆分和连接字符串,但为什么不使用子字符串呢?然后你只会得到一个拆分,而不是将字符串拆分为 5 个部分并重新加入它。最终结果是相同的,但子字符串可能要快一些。

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);
}
于 2012-10-18T19:06:52.133 回答