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

如何拆分未以}结尾的块末尾行并前置到下一个数据块

数据块拼接逻辑实现方案

核心逻辑步骤

  • 将字节数组转换为字符串后,先拼接上一次暂存的不完整行(如果存在)
  • 检查当前内容是否以}结尾
  • 若未以}结尾,拆分出最后一行暂存,剩余内容作为当前可处理的完整部分
  • 若已以}结尾,直接处理当前完整内容即可

示例代码(中文注释)

// 声明类级变量,用于跨数据块暂存不完整的行
private string _pendingLine = null;

if (rslt.Byte != null)
{
    string currentContent = System.Text.Encoding.Default.GetString(rslt.Byte);
    // 拼接上一次遗留的不完整行
    if (!string.IsNullOrEmpty(_pendingLine))
    {
        currentContent = _pendingLine + currentContent;
        _pendingLine = null;
    }

    // 忽略末尾空白后检查是否以闭合大括号结尾
    if (!currentContent.TrimEnd().EndsWith("}"))
    {
        // 兼容不同换行格式拆分内容
        string[] lines = currentContent.Split(new[] { "\r\n", "\n" }, StringSplitOptions.None);
        if (lines.Length > 0)
        {
            // 暂存最后一行
            _pendingLine = lines[lines.Length - 1];
            // 保留除最后一行外的完整内容
            currentContent = string.Join(Environment.NewLine, lines.Take(lines.Length - 1));
        }
    }

    // 此处添加对完整currentContent的业务处理逻辑
    // ...
}

关键细节说明

  • 用类级变量_pendingLine维护跨数据块的状态,确保不完整行不会丢失
  • 调用TrimEnd()避免末尾空白、换行符干扰结尾判断
  • 拆分换行时兼容Windows(\r\n)和Linux(\n)格式,保证跨环境兼容性

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.01 16:41:03