如何从C#中的字符串中删除前两行?

时间:2017-07-07 19:27:33

标签: c# string

我有一个如下字符串:

string myString = @"This is the first line

This is the third line as the 2nd is empty
The string continues

Anso so on ...
...
..
.";

我知道我可以将它拆分成一个数组,删除前两个元素,然后从该数组重建我的字符串,但我正在寻找更简单的东西。

3 个答案:

答案 0 :(得分:4)

myString = String.Join("\n", myString.Split('\n').Skip(2));

Here's @maccettura's fiddle该代码与您的字符串文字。

要打破这一点:

  1. 在换行符上拆分,返回一系列细分 - 细分是行,因为我们在换行符上拆分:

    myString.Split('\n')
    
  2. 跳过前两个段,返回序列的其余部分

    .Skip(2)
    
  3. 并使用换行符重新加入较短的序列:

    String.Join("\n", ...
    
  4. 这正是您正在考虑在循环中进行的操作,但使用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 ();
            }
        }
    }
}