如何拆分未以}结尾的块末尾行并前置到下一个数据块
数据块拼接逻辑实现方案
核心逻辑步骤
- 将字节数组转换为字符串后,先拼接上一次暂存的不完整行(如果存在)
- 检查当前内容是否以
}结尾 - 若未以
}结尾,拆分出最后一行暂存,剩余内容作为当前可处理的完整部分 - 若已以
}结尾,直接处理当前完整内容即可
示例代码(中文注释)
// 声明类级变量,用于跨数据块暂存不完整的行 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
相关产品推荐
相关产品推荐

