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

C#正则表达式:将多个反斜杠替换为单个反斜杠

解决C#中Regex.Replace替换连续反斜杠无效的问题

问题说明

需要将字符串中所有连续的多个反斜杠替换为单个反斜杠,示例如下:

  • 输入:mama\\Please\\\U0U0001f973\U00.txt
  • 期望输出:mama\Please\U0U0001f973\U00.txt

尝试的代码未生效,输出与输入一致:

string file = "mama\\Please\\\U0U0001f973\U00.txt";
string output = Regex.Replace(file, @"[/\\]{2,}", @"\");

问题原因

  1. 正则表达式包含了不必要的正斜杠匹配([/\\]),逻辑冗余且可能引入意外匹配;
  2. 输入字符串写法有误:"mama\\Please\\\U0U0001f973\U00.txt"中的\U会被编译器识别为Unicode转义序列开头,但后续字符不符合格式,导致字符串实际内容与预期不符。

解决方案

步骤1:修正正则表达式

仅针对连续反斜杠匹配,去掉正斜杠匹配逻辑,两种写法任选:

  • 逐字字符串写法(推荐,可读性更高):
    // 匹配连续2个及以上反斜杠,替换为单个反斜杠
    string output = Regex.Replace(file, @"\\{2,}", @"\");
    
  • 普通字符串写法:
    string output = Regex.Replace(file, "\\\\{2,}", "\\");
    

步骤2:修正输入字符串定义

使用逐字字符串(@开头)避免转义混乱,确保反斜杠数量符合预期:

// 逐字字符串中反斜杠无需转义,写多少就是多少
string file = @"mama\\Please\\\U0U0001f973\U00.txt";

完整示例代码

using System;
using System.Text.RegularExpressions;

class Program
{
    static void Main()
    {
        string file = @"mama\\Please\\\U0U0001f973\U00.txt";
        string output = Regex.Replace(file, @"\\{2,}", @"\");
        Console.WriteLine("输入:" + file);
        Console.WriteLine("输出:" + output);
    }
}

运行后输出:

输入:mama\\Please\\\U0U0001f973\U00.txt
输出:mama\Please\U0U0001f973\U00.txt

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 05:55:32