我对一个字符串执行split(' ')
,我想拉出返回字符串的第一个元素,以获取字符串的其余部分。
f.e。 "THIS IS AN AMAZING STRING".split(' ');
除了这个,我想得到所有的话。这是:令人惊叹的字符串
字符串在第一个和第二个字之间总是至少有一个空格,因为我会把它硬编码
是否有这样的功能? 谢谢
答案 0 :(得分: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
根据评论(IF X
保证是一个至少有一个空格的有效字符串)更简单的版本而不检查等。:
string Y = X.Substring (X.IndexOf ( " " ) + 1);
答案 1 :(得分:26)
一个相当不错的选择是使用:
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的重载(需要最多的分割数),您可以避免连接以及额外的开销。
答案 2 :(得分:17)
var a = "THIS IS AN AMAZING STRING".Split(' ');
string amazing = String.Join(" ", a.Skip(1));
如果您处于.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.
这对于较大的字符串表现得更好,因为Split只需查找直到找到第一个空格,然后才能创建只有两个字符串的结果 - 并且它避免了String.Join,这也可能很昂贵,特别是对于更长的时间字符串。
答案 3 :(得分: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);
由于问题的标题提到数组而不是字符串,因此值得一提的是ArraySegment
类 - 这使您能够创建指向数组部分的指针(无需创建新数组和复制数据):
var a = new int[] { 0, 1, 2, 3 };
var segment = new ArraySegment<int>(a, 1, a.Length - 1);
答案 4 :(得分:2)
很简单,你可以这样做:
string input = "THIS IS AN AMAZING STRING";
string result = input.Substring(input.IndexOf(' ') + 1);
这适用于您指定的输入类型(字符串中前两个单词之间总是有空格),但是对于输入字符串根本没有空格的情况,它会返回整个字符串as-is。
答案 5 :(得分:0)
试试这个
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);