我正在检查iTunes资料库的XML备份中是否存在文件。
如何更改此字符串
E:\Entertainment\Music\Latin\100% Azucar The Best of Celia Cruz & La Sonora Matancera/08 Mi Soncito.mp3
到这个
E:/Entertainment/Music/Latin/100%25%20Azucar%20%20The%20Best%20of%20Celia%20Cruz%20&%20La%20Sonora%20Matancera/08%20Mi%20Soncito.mp3
的变化:
答案 0 :(得分:7)
看起来像两件事:
1)用正斜杠替换反斜杠。
2)应用URI编码。
第一个是显而易见的。对于第二个,您有一些选择,包括Uri.EscapeDataString
,Uri.EscapeUriString
,HttpUtility.UrlEncode
和HttpUtility.UrlPathEncode
。
修改的
3)正如Vilx注意到的那样,文件名部分似乎有HtmlEncoding。
也许最好的答案是使用Uri类对部件进行切片和切块,并根据需要对其进行编码。
答案 1 :(得分:4)
我想我找到了他问题的关键部分。它隐藏在那里,作为第一句话,所有人,所以没有人注意到它。 XD
我正在检查iTunes资料库的XML备份中是否存在文件。
在我看来,我们正在处理一些流氓的iTunes-XML编码,这种编码在某些地方搞砸了。我的建议是反过来 - 解码iTunes字符串(首先通过HtmlDecode,然后是UrlDecode),然后将其与您正在寻找的原始字符串进行比较。这应该能够应对iTunes的大多数错误编码。
答案 2 :(得分:2)
一条非常简单的路线:
filepath.Replace("\", "/").Replace("%", "%25").Replace(" ", "%20").Replace("&", "&")
答案 3 :(得分:0)
%20表示空格字符。我知道你想用这个字符串做更多的事情,所以我可以问你喜欢用哪些工具?正则表达式?字符串替换?
答案 4 :(得分:0)
使用Uri.EscapeDataString()
静态方法执行此操作。超级容易。