Как я проверяю на запрещенные символы в пути?

Существует ли способ проверить, имеет ли Строка, предназначенная для пути, недопустимые символы в .NET? Я знаю, что мог выполнить итерации по каждому символу в Пути. InvalidPathChars, чтобы видеть, содержала ли моя Строка один, но я предпочел бы простое, возможно, более формальное, решение.

Есть ли один?

Я нашел, что все еще получаю исключение, если я только проверяю по, Добираются

Обновление:

Я нашел, что GetInvalidPathChars не покрывает каждый недопустимый символ пути. GetInvalidFileNameChars имеет еще 5, включая'?', с которым я столкнулся. Я собираюсь переключиться на это, и я сообщу, если это также окажется несоответствующим.

Обновление 2:

GetInvalidFileNameChars определенно не, что я хочу. Это содержит ': ', который любой полный путь собирается содержать ("C:\whatever"). Я думаю, что просто оказываюсь перед необходимостью использовать GetInvalidPathChars, в конце концов, и включать'?' и любые другие символы, которые вызывают меня проблемы, поскольку они подходят. Лучшие приветствующиеся решения.

28
задан John_ReinstateMonica 26 November 2019 в 09:32
поделиться

1 ответ

Я рекомендую использовать HashSet, чтобы это увеличило эффективность:

private static HashSet<char> _invalidCharacters = new HashSet<char>(Path.GetInvalidPathChars());

Затем можно просто проверить, что строка не является пустой/пустой и что нет никаких недопустимых символов:

public static bool IsPathValid(string filePath)
{
    return !string.IsNullOrEmpty(filePath) && !filePath.Any(pc => _invalidCharacters.Contains(pc));
}

Попытка это онлайн

0
ответ дан 28 November 2019 в 03:18
поделиться
Другие вопросы по тегам:

Похожие вопросы: