代码之家  ›  专栏  ›  技术社区  ›  Jack

如何通过C将字符@“\”转换为转义字符串#

  •  1
  • Jack  · 技术社区  · 7 年前

    在数据中命名为urlresult的字符串 "http:\/\/www.cnopyright.com.cn\/index.php?com=com_noticeQuery&method=wareList&optionid=1221&obligee=\u5317\u4eac\u6c83\u534e\u521b\u65b0\u79d1\u6280\u6709\u9650\u516c\u53f8&softwareType=1" .

    我要做的是去掉字符串中的前三个字符@'\ 在上面我尝试了以下功能:

    public string ConvertDataToUrl(string urlresult )
    {
    
       var url= urlresult.Split('?')[0].Replace(@"\", "") + "?" + urlresult .Split('?')[1];
    
    
      return url
    
    }
    

    "http://www.cnopyright.com.cn/index.php?com=com_noticeQuery&method=wareList&optionid=1221&obligee=\\u5317\\u4eac\\u6c83\\u534e\\u521b\\u65b0\\u79d1\\u6280\\u6709\\u9650\\u516c\\u53f8&softwareType=1" 这是不正确的。

    正确的结果是 "http://www.cnopyright.com.cn/index.php?com=com_noticeQuery&method=wareList&optionid=1221&obligee=北京沃华创新科技有限公司&softwareType=1"

    我试过很多方法,但都不管用。我不知道如何得到正确的结果。

    2 回复  |  直到 7 年前
        1
  •  3
  •   BlueMonkMN    7 年前

    为了证明这一点,我编译并运行了以下代码:

    static void Main(string[] args)
    {
       var url = @"http:\/\/www.cnopyright.com.cn\/index.php?com=com_noticeQuery&method=wareList&optionid=1221&obligee=\u5317\u4eac\u6c83\u534e\u521b\u65b0\u79d1\u6280\u6709\u9650\u516c\u53f8&softwareType=1";
       Console.WriteLine("{0}{1}{2}", url, Environment.NewLine, 
          url.Split('?')[0].Replace(@"\", "") + "?" + url.Split('?')[1]);
    }
    

    输出为:

    http:\/\/www.cnopyright.com.cn\/index.php?com=com_noticeQuery&method=wareList&optionid=1221&obligee=\u5317\u4eac\u6c83\u534e\u521b\u65b0\u79d1\u6280\u6709\u9650\u516c\u53f8&softwareType=1
    http://www.cnopyright.com.cn/index.php?com=com_noticeQuery&method=wareList&optionid=1221&obligee=\u5317\u4eac\u6c83\u534e\u521b\u65b0\u79d1\u6280\u6709\u9650\u516c\u53f8&softwareType=1
    
        2
  •  1
  •   Kvam    7 年前

    您可以使用 System.Text.RegularExpressions.Regex.Unescape 方法:

    var input = @"\u5317\u4eac\u6c83\u534e\u521b\u65b0\u79d1\u6280\u6709\u9650\u516c\u53f8";
    string escapedText = System.Text.RegularExpressions.Regex.Unescape(input);