Довольно просто с помощью регулярных выражений:
function basename(input) {
return input.split(/\.[^.]+$/)[0];
}
Пояснение:
Соответствует одному точечному символу, за которым следует любой символ, кроме точки ([^.]
), один или несколько раз (+
), привязанный к концу строки ($
).
Затем она разбивает строку на основе этого критерия соответствия и возвращает первый результат (т. Е. Все до совпадения).
[EDIT]
D'о. Неправильно прочитанный вопрос - он тоже хочет сойти с пути. Ну да ладно, это все равно отвечает на половину вопроса.