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

C# String操作:如何删除两个指定标记之间的全部字符

C# 删除指定标记区间内容的实现方案

你可以根据使用场景选择下面两种实现方式:

方法1:基础字符串操作(推荐大文本场景使用,性能更高)

通过索引定位两个标记的位置,直接截取拼接内容,避免正则的额外性能开销:

/// <summary>
/// 删除两个标记之间的内容(默认连标记本身一起删除)
/// </summary>
/// <param name="input">原字符串</param>
/// <param name="startMarker">起始标记</param>
/// <param name="endMarker">结束标记</param>
/// <returns>处理后的字符串</returns>
public static string RemoveContentBetweenMarkers(string input, string startMarker = "//RemoveFromhere", string endMarker = "//RemoveTohere")
{
    // 找不到起始标记直接返回原内容
    int startIndex = input.IndexOf(startMarker);
    if (startIndex < 0) return input;

    // 从起始标记后找结束标记,找不到直接返回原内容
    int endIndex = input.IndexOf(endMarker, startIndex + startMarker.Length);
    if (endIndex < 0) return input;

    // 要保留两个标记只删中间的话,把下行替换为 return input.Substring(0, startIndex + startMarker.Length) + input.Substring(endIndex);
    return input.Substring(0, startIndex) + input.Substring(endIndex + endMarker.Length);
}

// 调用示例
string originalStr = @"//RemoveFromhere
 <div>
 <p>my name is blawal i want to remove this div </p>
  </div>
//RemoveTohere";
string processedStr = RemoveContentBetweenMarkers(originalStr);

方法2:正则表达式(适合简单场景,代码更简洁)

用正则非贪婪匹配实现,可直接匹配跨换行的内容:

using System.Text.RegularExpressions;

string originalStr = @"//RemoveFromhere
 <div>
 <p>my name is blawal i want to remove this div </p>
  </div>
//RemoveTohere";

// 连标记一起删除的写法
string processedStr = Regex.Replace(originalStr, @"//RemoveFromhere[\s\S]*?//RemoveTohere", string.Empty);

// 要保留两个标记只删中间的写法
// string processedStr = Regex.Replace(originalStr, @"(?<=//RemoveFromhere)[\s\S]*?(?=//RemoveTohere)", string.Empty);

注意事项

  • 正则的非贪婪匹配符*?不可省略,否则存在多组标记时会匹配到最后一个结束标记,导致范围错误
  • 处理MB级以上的大文本时,优先使用第一种字符串操作方案

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 04:54:00