我做split(' ')
了一个字符串,我想拉出返回字符串的第一个元素以获取字符串的其余部分。
铁"THIS IS AN AMAZING STRING".split(' ');
我想得到所有的话,但这个。这是:是一个惊人的字符串
该字符串将始终在第一个和第二个单词之间至少有一个空格,因为我会将其硬编码
有没有一个功能可以做到这一点?谢谢你
尝试
string X = "THIS IS AN AMAZING STRING";
string Y = (X.IndexOf ( " " ) < 0) ? string.Empty : X.Substring (X.IndexOf ( " " ) + 1); // Y = IS AN AMAZING STRING
根据评论(X
保证 IF 是一个至少有一个空格的有效字符串)一个更简单的版本,无需检查等:
string Y = X.Substring (X.IndexOf ( " " ) + 1);
一个相当不错的选择是使用:
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的重载,您可以避免加入的需要以及额外的开销。
不要使用该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);
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 也可能很昂贵,尤其是对于较长的字符串。
很简单,你可以这样做:
string input = "THIS IS AN AMAZING STRING";
string result = input.Substring(input.IndexOf(' ') + 1);
这将适用于您指定的输入类型(字符串中的前两个单词之间总是有空格),但是对于输入字符串根本没有空格的情况,它会将整个字符串返回为 -是。
尝试这个
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);