1

我从一个网站上抓取了一些数据。数据中名为 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".

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

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"

我尝试了很多方法,但没有奏效。我不知道如何获得正确的结果。

4

2 回答 2

3

我认为您可能会被调试器误导,因为您提供的代码没有理由插入额外的“\”字符。调试器通常会在带引号的字符串中显示额外的“\”,以便您可以分辨出哪些“\”字符确实存在,哪些用于表示其他特殊字符。我建议用 Debug.WriteLine 写出字符串或将其放入日志文件中。我认为您在问题中提供的信息不正确。

作为证明,我编译并运行了这段代码:

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
于 2017-10-23T13:26:15.863 回答
1

您可以使用以下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);
于 2017-10-23T13:23:42.020 回答