Задача курса
Go strings: проверка имени файла и расширения перед загрузкой
Курс «Golang с нуля» · урок «Пакеты strings и strconv: поиск, разбивка, замена и преобразование типов»
Условие
Проверка имени перед загрузкой
Когда множество людей одновременно загружают файлы в общую систему, беспорядок в именах быстро становится настоящей проблемой: пробелы в начале или конце имени ломают сортировку, двойные точки сбивают с толку парсеры расширений, а неожиданные форматы файлов засоряют хранилище тем, чего там быть не должно. Чтобы этого не допустить, ещё до фактической передачи данных имя каждого файла проходит формальную проверку — быструю и не требующую обращения к диску или сети.
Правила проверки просты и немногочисленны. Имя не должно начинаться или заканчиваться пробелом, не должно содержать пробел или двойную точку внутри, а расширение обязано входить в заранее разрешённый список. Именно в таком порядке нарушения и рассматриваются: как только обнаруживается первое из них, дальнейший разбор прекращается и пользователь получает сообщение о конкретной причине отказа.
Задача программы — принять строку с именем файла и вынести однозначный вердикт: либо указать на первое нарушенное правило, либо подтвердить, что имя составлено верно и файл можно передавать дальше.
Что нужно сделать
Реализуйте функцию CheckUploadName(name string) string. Верните первое найденное нарушение в таком порядке: edge space, если strings.TrimSpace(name) != name; inner space, если имя содержит обычный пробел; double dot, если имя содержит ..; extension, если имя не заканчивается на .txt, .csv или .json. Если нарушений нет, верните ok. Расширения сравниваются с учётом регистра.
Ввод и вывод
Функция получает одну строку с именем и возвращает одну из строк edge space, inner space, double dot, extension или ok. Читать stdin и обращаться к файловой системе не нужно.
Пример
CheckUploadName("report..csv") возвращает double dot, а CheckUploadName("report.csv") — ok.
Примеры
Пример 1
- Ввод
["report.csv"]
- Ожидаемый результат
"ok"
