You need to enable JavaScript to run this app. 如何用C#判断两个文本是否相同 适配单行与多行换行比对场景
优惠活动
大模型
产品
解决方案
定价
更多

如何用C#判断两个文本是否相同 适配单行与多行换行比对场景

C# 兼容排版换行的字符串一致性判定方案

核心判定逻辑

这类场景的差异仅来自排版时插入的换行符,不存在实质内容改动,因此判定逻辑可以梳理为:

  • 预处理阶段移除所有仅用于排版换行的控制字符(包括\r、\n、\r\n,这类字符是排版时强制拆分文本行插入的,不属于原始文本内容)
  • 预处理完成后,对两个字符串做严格的逐字符相等校验,只要剩余字符完全匹配就判定为内容一致,否则判定为存在实质差异

该逻辑完全匹配示例中的判定规则:

  • 多行文本仅做拆分排版、没有内容修改时,移除换行后和单行文本完全匹配,判定结果为TRUE
  • 多行文本修改了实际词句内容时,即使排版结构一致,预处理后的字符存在实质差异,判定结果为FALSE

具体实现代码

using System.Text;

public static class TextEqualityComparer
{
    public static bool CompareIgnoreLineBreak(string firstText, string secondText)
    {
        // 处理引用相等、空值边界场景
        if (ReferenceEquals(firstText, secondText))
            return true;
        if (firstText is null || secondText is null)
            return false;

        // 文本标准化:移除所有换行控制字符
        string NormalizeRawText(string rawInput)
        {
            var stringBuilder = new StringBuilder(rawInput.Length);
            foreach (var character in rawInput)
            {
                // 跳过所有回车、换行类控制字符,不保留额外间隔效果
                if (character == '\r' || character == '\n')
                    continue;
                stringBuilder.Append(character);
            }
            return stringBuilder.ToString();
        }

        var normalizedFirstText = NormalizeRawText(firstText);
        var normalizedSecondText = NormalizeRawText(secondText);

        // 严格逐字符比对,区分大小写、符号、空格的差异
        return normalizedFirstText.Equals(normalizedSecondText, StringComparison.Ordinal);
    }
}

实现效果验证

  1. 针对示例中判定为TRUE的场景:
    • 单行文本预处理后得到完整连续的目标内容
    • 多行文本移除所有换行符后,得到的字符串和单行预处理结果完全一致,判定为相同
  2. 针对示例中判定为FALSE的场景:
    • 多行文本因为修改了实际内容(把show替换为do not show、same替换为different),移除换行后的字符串和单行文本存在实质字符差异,判定为不同

注意事项

  • 该逻辑不会过度模糊文本差异:所有非换行类的字符(包括空格、字母、标点、特殊符号)都会被严格保留参与比对,不会把存在实质内容差异的文本误判为相同
  • 避免使用“将换行替换为空格再比对”的实现思路:这种方式会额外引入空格字符,可能导致本来一致的文本因为多余空格出现误判
  • 如果业务需要兼容大小写、全角半角的比对规则,可以在最终比对环节调整StringComparison的枚举参数,核心的换行预处理逻辑不需要改动

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.27 06:54:04