我需要存储一些对于我的用户访问的每个站点来说都是唯一的信息。(它实际上是他查看过的站点的缩略图。)
该缩略图(jpeg 文件)需要有一个名称来指示它代表哪个站点,以便稍后可以查看。
您能推荐一个从 url 到有效文件名的简单转换吗?
示例:www.ibm.com可以映射到www_ibm_com.
我不确定这是否始终适用于所有有效的 url,在某些情况下,url 具有非常复杂的查询字符串。
有没有好的正则表达式或 c# 库可以使用?
预先感谢并快乐。
首先值得指出的是“。” 在文件名中完全合法,但“/”则不然,因此虽然您引用的示例不需要翻译,但“www.ibm.com/path1/file1.jpg”则需要翻译。
\n\n一个简单的string.Replace解决方案是最好的解决方案 - 假设您可以找到一个在文件名中合法但在网址中非法的字符。
假设非法的 URL 字符是“\xc2\xa7”(这在 URL 中可能是合法的),那么你会得到:
\n\nstring.Replace("/", "\xc2\xa7");\nRun Code Online (Sandbox Code Playgroud)\n\n翻译为文件名并且:
\n\nstring.Replace("\xc2\xa7", "/");\nRun Code Online (Sandbox Code Playgroud)\n\n翻译回来。
\n\nURL 编码的此页面定义了 URL 的有效、无效和不安全(有效但具有特殊含义)字符。ISO-Latin 集 80-FF 十六进制(十进制 128-255)“上半部分”中的字符不合法,但在文件名中可能没问题。
\n\n您需要对 URL 中无效文件名字符集中的每个字符执行此操作。您可以使用GetInvalidFileNameChars.
更新
\n\n假设您找不到合适的字符对,那么另一种解决方案是使用查找表。一列保存 URL,另一列保存生成的文件名。只要生成的名称是唯一的(GUID 就可以),您就可以进行双向查找以从一个名称转到另一个名称。
\n| 归档时间: |
|
| 查看次数: |
2495 次 |
| 最近记录: |