Javascript-форум (https://javascript.ru/forum/)
-   Общие вопросы Javascript (https://javascript.ru/forum/misc/)
-   -   Текст после последней точки (https://javascript.ru/forum/misc/52116-tekst-posle-poslednejj-tochki.html)

TimohaP 04.12.2014 19:21

Текст после последней точки
 
Тут скорее всего прийдется делать регулярками. Короч вот в чем дело: скрипту дается ссылка на файл, а он должен вернуть его расширение. Например:
image.jpg - вернет jpg
file:///d:/word.doc - вернет doc
jquery.min.js - вернет js

Safort 04.12.2014 19:36

var url = 'file:///d:/word.doc'.split('.');
alert(url[url.length-1]);

devote 04.12.2014 19:37

Safort,
Только если точек больше чем одна... неожиданно получишь иной результат. )

Safort 04.12.2014 19:40

devote,
точно?)
var url = 'file:///d:/w.o.r.d.doc'.split('.');
alert(url[url.length-1]);

devote 04.12.2014 19:43

Цитата:

Сообщение от Safort
точно?)

Удивительно. Похоже исправили метод. А то ранее он работал иначе. Разбивал лишь по первому найденному вхождению... либо я что то путаю.

Ну хорошо, а если вообще точек не будет?

Safort 04.12.2014 19:52

devote,
Цитата:

Ну хорошо, а если вообще точек не будет?
То это совсем другая задача. Тут нужно найти расширение(согласно примерам), мой код его находит, все радуются, а ты нет ;(

devote 04.12.2014 19:57

Safort, твой пример можно упростить
var ext = 'file:///d:/w.o.r.d.doc'.split('.').pop();
alert(ext);

Ну а так если все же нужен правильный функционал:
var url = 'file:///d:/w.o.r.d.doc';
var ext = (ext = url.split('.')).length > 1 ? ext.pop() : '';
alert(ext);

var url = 'file:///d:/doc';
var ext = (ext = url.split('.')).length > 1 ? ext.pop() : '';
alert(ext);

krutoy 04.12.2014 20:07

Цитата:

Сообщение от devote
Ну а так если все же нужен правильный функционал:

Тогда уж проще регулярку
url.match(/\.([a-z]+)$/i)[1]

Safort 04.12.2014 20:09

devote,
за pop() спасибо, совсем забыл про него)

devote 04.12.2014 20:25

Цитата:

Сообщение от krutoy
Тогда уж проще регулярку

регулярки кушают процессор/память компа... Ради разбиения строки по точкам, нет смысла заставлять интерпретатор создавать экземпляр регулярки, распарсивать регулярку, потом делать десяток проходов на поиск совпадения... Тогда когда split делает лишь один проход, не инициализирует парсер регулярки и т.д.


Часовой пояс GMT +3, время: 17:35.