从字符串构建器/字符串c#中删除第一行

use*_*174 3 c# stringbuilder

好的,所以我试图在表单中创建一个像文本框一样的"控制台",但是一旦你到达底部,可以向上滚动,它只会删除顶线,我有一些困难.到目前为止,当它达到最低点时,它会删除顶线,但只有一次,它只是正常运行.这是我的功能:

   StringBuilder sr = new StringBuilder();
    public void writeLine(string input)
    {
        string firstline = "";
        int numLines = Convert.ToString(sr).Split('\n').Length;
        if (numLines > 15)      //Max Lines
        {                
            sr.Remove(0, Convert.ToString(sr).Split('\n').FirstOrDefault().Length);              
        }
        sr.Append(input + "\r\n");
        consoleTxtBox.Text = Convert.ToString(sr) + numLines;
    }
Run Code Online (Sandbox Code Playgroud)

如果有人能解决这个问题会很好,谢谢

卢卡斯

das*_*ght 8

首先,你的解决方案有什么问题:它不起作用的原因是它删除了行的内容,但它忽略\n了最后的内容.添加1应修复:

sr.Remove(0, Convert.ToString(sr).Split('\n').FirstOrDefault().Length+1);              
//                                                                    ^
//                                                                    |
//   This will take care of the trailing '\n' after the first line ---+
Run Code Online (Sandbox Code Playgroud)

现在要做一个更简单的方法:你需要做的就是找到第一个\n,并在它之后获取子串,如下所示:

string RemoveFirstLine(string s) {
    return s.Substring(s.IndexOf(Environment.NewLine)+1);
}
Run Code Online (Sandbox Code Playgroud)

请注意,即使字符串中没有换行符,即IndexOf返回时-1(此时没有删除任何内容),此代码也不会崩溃.