You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在C#中获取简单字符串变量中的最后一行

获取内存中多行字符串的最后一行(C#)

很简单的需求,既然你的字符串是存在变量里而非文件中,我给你几个实用的C#方案,完全不需要读文件操作:

方案1:Split分割后取最后一项(简洁直观)

这种写法最容易理解,适合大多数普通长度的字符串:

string mytext = "line1\nline2\nline3";
// 同时处理Unix(\n)、Windows(\r\n)、旧Mac(\r)的换行格式,自动过滤空行
var lastLine = mytext.Split(new[] { '\n', '\r' }, StringSplitOptions.RemoveEmptyEntries).Last();

小贴士:加上StringSplitOptions.RemoveEmptyEntries可以避免字符串末尾有换行时返回空字符串的问题。

方案2:LastIndexOf定位截取(性能最优)

如果你的字符串特别长,分割整个字符串会占用较多内存,用这个方法直接定位最后一个换行符的位置,效率更高:

string mytext = "line1\nline2\nline3";
// 找到最后一个换行相关字符的位置
int lastNewLinePos = mytext.LastIndexOfAny(new[] { '\n', '\r' });
// 处理只有一行的情况,同时清理末尾可能残留的换行符
var lastLine = lastNewLinePos == -1 
    ? mytext 
    : mytext.Substring(lastNewLinePos + 1).TrimEnd('\r', '\n');

方案3:StringReader逐行读取(内存友好)

针对超大型字符串(比如几MB甚至更大),用StringReader逐行读取,不会一次性加载所有行到内存里:

string mytext = "line1\nline2\nline3";
string lastLine = null;
using (var reader = new StringReader(mytext))
{
    string currentLine;
    // 逐行读取,每次只保留最后一行的引用
    while ((currentLine = reader.ReadLine()) != null)
    {
        lastLine = currentLine;
    }
}
// 循环结束后lastLine就是最后一行内容

内容的提问来源于stack exchange,提问作者Mahyar Esteki

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 06:55:37