我在C#中编写一个应用程序,需要在URL和/或文件名中找到占位符,并用值替换,如下所示:C:\files\file{number}
=> C:\files\file1
不幸的是,对于该示例,文件名和URL中允许使用花括号。
有人可以建议一些我可以用来表示文件和网址占位符的字符吗?谢谢!
答案 0 :(得分:6)
当您尝试使用文件名时,Windows相当有用地告诉您文件名中不允许使用哪些字符:
文件名不能包含以下任何字符:
\ /:*? “<> |
有关详细信息,请参阅this support article,包括允许的字符列表。
对命名有效的字符 文件,文件夹或快捷方式包括 任何字母组合(A-Z)和 数字(0-9),加上以下内容 特殊字符:
^ Accent circumflex (caret) & Ampersand ' Apostrophe (single quotation mark) @ At sign { Brace left } Brace right [ Bracket opening ] Bracket closing , Comma $ Dollar sign = Equal sign ! Exclamation point - Hyphen # Number sign ( Parenthesis opening ) Parenthesis closing % Percent . Period + Plus ~ Tilde _ Underscore
对于网址,请参阅RFC 1738的第2.2节,了解允许的字符说明:
因此,只有字母数字, 特殊字符“$ -_。+!*'(),”和 用于保留目的的保留字符可以在URL中以未编码的形式使用。
...同样感兴趣,来自同一部分:
字符对于数字可能不安全 原因。空间角色是 不安全,因为重要的空间可能 消失和微不足道的空间可能 在URL时引入 转录或排版或受到 文字处理的处理 程式。字符“<”和“>” 是不安全的,因为它们被用作 免费的URL周围的分隔符 文本;引号(“”“)用于表示 在某些系统中划分URL。该 字符“#”是不安全的,应该 总是被编码,因为它被使用 在万维网和其他系统中 从a分隔URL 可能的片段/锚标识符 跟着它。字符“%”是 不安全,因为它用于 其他角色的编码。其他 字符是不安全的,因为网关 和其他运输代理商是已知的 有时修改这些字符。 这些字符是“{”,“}”,“|”, “\”,“^”,“〜”,“[”,“]”和“`”。
所有不安全的字符必须始终在URL中编码。
看起来双引号和尖括号字符("<>
)是不错的选择。