1. «Там была тысяча вопросов об одном и том же!»
Я знаю. Но все эти ответы:
- замена \ и / и размышление « окей, это все», что, конечно, неправда;
- или взятие случайного и устаревшего списка «недопустимых символов» из Википедии или где-либо еще на в Интернете, удаляя все символы, появляющиеся в списке, с помощью Regex, что является чрезмерным для *nix (обычно запрещено использовать только /) и слишком мало для Windows (, AUX и т. д. редко учитываются в этих ответах);
Код: Выделить всё
CON - или даже удалив все символы, отличные от ASCII, из имени , что явно слишком консервативно.
Я ищу способ (или, в частности, библиотеку, системный/SDK API или фрагмент кода), который:
- правильно (т. е. учитываются все недопустимые символы и шаблоны в официальной документации ОС или файловой системы);
- является кроссплатформенным (т. е. я могу передать тип ОС или файловой системы (например, WIN, UNIX, NTFS) и получить достаточное количество незаконных шаблонов для этой ОС/ФС).
Самое близкое к тому, что я могу найти, — это Path.GetInvalidFileNameChars в C#. Но он также не учитывает зарезервированные ключевые слова (например, CON, AUX и т. д.).
Этот вопрос не зависит от языка, поэтому ответьте на любой язык, который вы предпочитаете.
Подробнее здесь: https://stackoverflow.com/questions/787 ... latform-wa