我做一个split(' ')字符串,我想拉回返字符串的第一个元素,以获得其余的字符串.
FE "THIS IS AN AMAZING STRING".split(' ');
我希望得到所有的话,但这个.这是:令人惊叹的弦乐
字符串在第一个和第二个字之间总是至少有一个空格,因为我会把它硬编码
有没有这个功能?谢谢
Yah*_*hia 37
尝试
string X = "THIS IS AN AMAZING STRING";
string Y = (X.IndexOf ( " " ) < 0) ? string.Empty : X.Substring (X.IndexOf ( " " ) + 1); // Y = IS AN AMAZING STRING
Run Code Online (Sandbox Code Playgroud)
根据评论(IF X保证是一个至少有一个空格的有效字符串)一个更简单的版本没有检查等:
string Y = X.Substring (X.IndexOf ( " " ) + 1);
Run Code Online (Sandbox Code Playgroud)
Ree*_*sey 26
一个相当不错的选择是使用:
string original = "THIS IS AN AMAZING STRING";
string[] split = original.Split(new []{' '}, 2);
string result = split[1];
Run Code Online (Sandbox Code Playgroud)
请注意,如果您只想要生成的字符串,可以缩短:
var result = original.Split(new []{' '}, 2)[1];
Run Code Online (Sandbox Code Playgroud)
通过使用string.Split的重载,它需要最多的拆分数,您可以避免连接以及额外的开销.
dri*_*iis 17
var a = "THIS IS AN AMAZING STRING".Split(' ');
string amazing = String.Join(" ", a.Skip(1));
Run Code Online (Sandbox Code Playgroud)
如果您使用的是.NET 4之前,则需要在Skip调用结束时粘贴.ToArray() - 因为在.NET 4中首次添加了可枚举的String.Join重载作为第二个参数.
虽然这在一般情况下效果很好,但如果你总是想要删除第一个单词,那么有一种更好的方法可以做到这一点,正如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.
Run Code Online (Sandbox Code Playgroud)
这对于较大的字符串执行得更好,因为Split只需要查找直到找到第一个空格,然后才能创建只有两个字符串的结果 - 并且它避免了String.Join,这也可能很昂贵,尤其是对于较长的字符串.
Kna*_*ģis 17
不要使用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);
Run Code Online (Sandbox Code Playgroud)
由于问题的标题提到了数组,而不是字符串,因此值得一提的是ArraySegment- 这使您能够创建指向数组部分的指针(无需创建新数组并复制数据):
var a = new int[] { 0, 1, 2, 3 };
var segment = new ArraySegment<int>(a, 1, a.Length - 1);
Run Code Online (Sandbox Code Playgroud)