Я просто использовал эту самую полезную ссылку: Как проверить, является ли данная строка допустимым / действительным именем файла в 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 будет выглядеть примерно так (используя пример с найденным двоеточием):
- begin -
Следующие недопустимые символы:обнаружено:
:
- конец -
Я бы хотел сказать что-то вроде:
- начало -
Обнаружены следующие недопустимые символы:
Двоеточие ->:
- конец -
Мне нравится иметь английское имя.Не убийца, но было бы любопытно, есть ли какая-то функция вроде этого (которая не существует для класса Char, но может существовать в другом классе, о котором я не думаю):
Char.GetEnglishName (':');