【发布时间】:2012-02-14 10:09:15
【问题描述】:
我只是使用这个最有用的链接:How do I check if a given string is a legal / valid file name under Windows?
在一些验证代码中,我有一些看起来像的东西(忽略我没有使用 StringBuilder 类并忽略形成消息的错误(不需要多次告诉他们关于“冒号”)如果它多次出现在字符串中)):
string InvalidFileNameChars = new string(Path.GetInvalidFileNameChars());
Regex ContainsABadChar = new Regex("[" + Regex.Escape(InvalidFileNameChars) + "]");
MatchCollection BadChars = ContainsABadChar.Matches(txtFileName.Text);
if (BadChars.Count > 0)
{
string Msg = "The following invalid characters were detected:\r\n\r\n";
foreach (Match Bad in BadChars)
{
Msg += Bad.Value + "\r\n";
}
MessageBox.Show(Msg, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
return;
}
MessageBox 看起来像(使用找到冒号的示例):
-- 开始--
检测到以下无效字符:
:
-- 结束--
我想这样说:
-- 开始--
检测到以下无效字符:
冒号 -> :
-- 结束--
我喜欢有英文名字。不是杀手,但很好奇那里是否有一些功能(对于 Char 类不存在,但可能存在于我不考虑的其他类中):
Char.GetEnglishName(':');
【问题讨论】:
-
你试过自己写函数吗?
-
@DanielA.White 我不确定他是否想要 Unicode,但这是很多字符。 Program Charmap 确实有这些数据。
-
:) Char.GetEnglishName(':');我希望会有这样的方法
-
但是看看他改编的代码,但只有 6 个无效字符,所以编写自己的代码并不太难。在任何情况下。我认为这是一个很好的问题,您如何获得这些数据?
-
@ShoaibShaikh 但也许更好的是
Char.GetName(':', culture)