c# – 将url转换为有效的文件名并返回到url

我需要存储一些对我的用户访问的每个站点唯一的信息.
(它实际上是他查看过的网站的缩略图.)
此缩略图(jpeg文件)需要具有一个名称,指示它所代表的网站,以便稍后查看.

你能推荐从url到有效文件名的简单翻译吗?

示例:www.ibm.com可以映射到www_ibm_com.

在某些情况下,我不确定这将始终适用于所有有效网址.网址具有非常复杂的查询字符串.
是否有可以使用的正则表达式或c#库?

提前谢谢,并感到高兴.

最佳答案
首先,值得指出的是“.”在文件名中是完全合法的,但“/”不是,所以虽然你引用的例子不需要翻译,“www.ibm.com/path1/file1.jpg”会.

一个简单的string.Replace在这里是最好的解决方案 – 假设您可以找到一个在文件名中合法但在URL中非法的字符.

假设非法URL字符是“§”(在URL中可能是合法的),那么您有:

string.Replace("/", "§");

转换为文件名和:

string.Replace("§", "/");

翻译回来.

This page on URL Encoding定义了URLS的有效,无效和不安全(有效但具有特殊含义)字符. ISO-Latin集合80-FF十六进制(128-255十进制)的“上半部分”中的字符不合法,但文件名可能正常.

您需要对URL中的每个字符执行此操作,该字符位于无效文件名字符集中.你可以使用GetInvalidFileNameChars获得这个.

UPDATE

假设您找不到合适的字符对,那么另一种解决方案就是使用查找表.一列保存URL,另一列保存生成的文件名.只要生成的名称是唯一的(GUID就可以),您可以执行双向查找以从一个到另一个.

转载注明原文:c# – 将url转换为有效的文件名并返回到url - 代码日志