拆分并加入C#字符串

Gau*_*aui 71 c# arrays string

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

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

例:

theString = "Some Very Large String Here"
Run Code Online (Sandbox Code Playgroud)

会成为:

theArray = [ "Some", "Very", "Large", "String", "Here" ]
Run Code Online (Sandbox Code Playgroud)

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

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

所以它会成为:

firstElem = "Some";
restOfArray = "Very Large String Here"
Run Code Online (Sandbox Code Playgroud)

我知道我可以theArray[0]用于第一个元素,但是如何将数组的其余部分合并为一个新字符串?

Ree*_*sey 166

你可以使用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));
Run Code Online (Sandbox Code Playgroud)

如果你知道你总是只想分开第一个元素,你可以使用:

var array = theString.Split(' ', 2);
Run Code Online (Sandbox Code Playgroud)

这使得您无需加入:

string restOfArray = array[1];
Run Code Online (Sandbox Code Playgroud)

  • 在"Split"的双参数形式中,第一个参数应该是*字符数组*,而不是单个字符.请参阅MSDN上的[String.Split方法(Char\[\],Int32)](https://msdn.microsoft.com/en-us/library/c1bs0eda(v = vs.110).aspx)并显示示例在[此答案](http://stackoverflow.com/a/12962034/1497596)中由user166390. (5认同)

小智 21

好吧,这是我的"答案".它使用了一个事实,即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];
Run Code Online (Sandbox Code Playgroud)

这与Substring方法非常相似,只是通过不同的方法.


She*_*ger 6

您可以拆分并加入字符串,但为什么不使用子字符串?然后你最终得到一个分裂而不是将字符串分成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);
}
Run Code Online (Sandbox Code Playgroud)

  • @SheridanBulger如果你想真正找到一个性能差异,不要增加迭代次数,增加字符串的大小.如果你在博士论文上进行这两项操作(甚至几次),你会发现更深刻的差异.如果您不会在大型数据集上使用它,那么显然性能不相关. (4认同)