我有一个如下字符串:
string myString = @"This is the first line
This is the third line as the 2nd is empty
The string continues
Anso so on ...
...
..
.";
我知道我可以将它拆分成一个数组,删除前两个元素,然后从该数组重建我的字符串,但我正在寻找更简单的东西。
答案 0 :(得分:4)
myString = String.Join("\n", myString.Split('\n').Skip(2));
Here's @maccettura's fiddle该代码与您的字符串文字。
要打破这一点:
在换行符上拆分,返回一系列细分 - 细分是行,因为我们在换行符上拆分:
myString.Split('\n')
跳过前两个段,返回序列的其余部分
.Skip(2)
并使用换行符重新加入较短的序列:
String.Join("\n", ...
这正是您正在考虑在循环中进行的操作,但使用Skip()
,它可以表示为可读的单行。
最后,这是@ user1242967的Split()调用版本,它将处理\r\n
个换行符:
myString.Split(new string[] { "\r\n", "\n" }, StringSplitOptions.None)
答案 1 :(得分:1)
如果你做想要微优化(或者你的字符串很大,或者你在循环中调用它),这是一种更高效的方法:
private static string RemoveFirstTwoLines(string myString) {
int ix = myString.IndexOf('\n');
ix = myString.IndexOf('\n', ix + 1);
return myString.Substring(ix + 1);
}
答案 2 :(得分:1)
适用于大字符串,代码易于阅读:
using System.IO;
namespace ConsoleApplication
{
class Program
{
static void Main (string[] args)
{
var text = "line 1\r\nline 2\r\nline 3\r\nline 4";
using (var sr = new StringReader (text))
{
sr.ReadLine ();
sr.ReadLine ();
string result = sr.ReadToEnd ();
}
}
}
}