вирезать последни часть, после задаммого символа
еше раз здравтвуите :)
есть строка, хочется вирезать из него последни часть, после заданного символа. например есть строка "aaa.www.ddd" задаём символ . (точка) получаем .ddd как ето реализоваеть ? |
alert( /\.[^\.]*$/.exec( "aaa.www.ddd" )[0] ) |
var str = 'aaa.www.ddd'; alert( str.slice( str.lastIndexOf('.') + 1 ) ); |
nikita.mmf,
четко, наш парень) |
спасибо :)
|
Цитата:
|
Pavel M.,
кстати я уже под <9 не верстаю) |
Цитата:
|
Цитата:
|
Pavel M.,
совсем забыл, что это не работает в IE < 9. var lastIndexOf = String.prototype.lastIndexOf ? function ( str, searchstring ) { return str == null ? null : String.prototype.lastIndexOf.call( str, searchstring ); } : function ( str, searchstring ) { if ( str == null ) return null; str = str + ""; var strLength = str.length; var indexOf = str.split('').reverse().join('').indexOf( searchstring ); return indexOf > -1 ? strLength - indexOf - 1 : -1; } var foo = "aaa.ddd.bar"; alert( foo.slice( lastIndexOf( foo, '.' ) + 1 ) ); |
nikita.mmf,
что мешало просто в прототип добавить? О_О что вообще за адов метод7 с чего ты взял что в ишаке реверс есть? О_О зачем вообще реверс делать? О_О что за ад тут происходит блять? |
Одно слово - наркоманы.
lastIndexOf у строк поддерживается с самой первой версии js. |
Цитата:
|
//ласт индекс оф String.prototype.lastIndexOf = function(subString, index){ subString.length > 1 && (subString = subString.split('')); var i = (index !== undefined) ? index : this.length-1; while(i-- != 0){ if(this[i] === subString[0]){ if(subString.length === 1) return i; else{ for( var j = 1; j < subString.length; j++){ if(this[i+j] !== subString[j]) break; if(j === subString.length-1) return i; }; } }; } return -1; }; alert("canal".lastIndexOf("a")) // 3 alert("canal".lastIndexOf("a",2)) // 1 alert("canal".lastIndexOf("a",0)) // -1 alert("canal".lastIndexOf("x")) // -1 |
Заменить кроссбраузерный метод на некросбраузерный...
![]() |
Aetae,
о чем ты вообще? кто так делает? если ты про мой метод, то он кросс. |
Mахmaxmaximus,
indexOf/lastIndexOf появился в Array.prototype с версии javascript 1.6, но у String он с 1.0, зачем его заменять на свой? |
poorking,
его и не нужно заменять это полнейшая глупость. очевидно что нативный быстрее. а зачем его нужно заменять? если ни секрет конечно |
аа, тебя вот это смутило?
String.prototype.lastIndexOf просо чувак сказал что в ослах такого нет и привел пример как реализовать,я показал как надо это делать. |
subString[0] Это не будет работать в ie. |
Цитата:
засело в голове, что lastIndexOf для массивов не работает в старых IE, а здесь шла речь о строках |
Mахmaxmaximus,
если конструктивная критика по коду, то напишите, если нет - то лучше вообще ничего не писать. |
nikita.mmf,
не производителен, избыточен. ты используешь 2 реверса, 2 конкатенации и.т.п. это все пробегается по всему массиву целиком, а нам не нужен весь массив целиком. Это избыточно и не логично. Цитата:
//ласт индекс оф String.prototype.lastIndexOf = function(subString, index){ subString.length > 1 && (subString = subString.split('')); var i = (index !== undefined) ? index : this.length-1; while(i-- != 0){ if(this[i] === subString[0]){ if(subString.length === 1) return i; else{ for( var j = 1; j < subString.length; j++){ if(this[i+j] !== subString[j]) break; if(j === subString.length-1) return i; }; } }; } return -1; }; alert("canal".lastIndexOf("a")) // 3 alert("canal".lastIndexOf("a",2)) // 1 alert("canal".lastIndexOf("a",0)) // -1 alert("canal".lastIndexOf("x")) // -1 |
Горе мне, split то я и не заметил.
Это тема полна фэйлами чуть более чем полностью.=/ |
На вскидку еще несколько вариантов без регексов:
var str = "aaa.www.ddd"; alert(str.substr(str.lastIndexOf('.') + 1)); var array = "aaa.www.ddd".split('.'); alert(array[array.length-1]); alert("aaa.www.ddd".split('.').slice(-1)); alert("aaa.www.ddd".split('.').pop(-1)); alert("aaa.www.ddd".split('.').splice(-1, 1)); |
monolithed,
ну так не честно) |
Цитата:
|
По моему ни чего производительней ластИндексОф тут нет, а сплит медленнее регулярок, или я не прав?
Цитата:
|
Цитата:
Цитата:
|
Mахmaxmaximus,
тесты по производительности в студию, 1 reverse и 1 join. |
Еще один алгоритм:
var str = "aaa.www.ddd", i = str.length, array = []; while (str[--i] != '.') array.push(str[i]); alert(array.join('')); И для совсем извращенцев на 1-2mc медленнее: var str = "aaa.www.ddd", i = str.length, path; while (str[--i] != '.') path = str.slice(i); alert(path); |
monolithed,
он в ие не работает |
Цитата:
|
я вообще не понимаю, если браузеры не работают это их проблемы) но ни как не мои ;)
я не знаю на сколько нужно мало зарабатывать чтобы прогимбатьяс и программировать не на javascript, а на каком то неведомом извращенском языке в котором ни чего нет) я рельно знаю только жс, иешные языки я не учил, а так брал бы как минимум двойную плату за двойную работу. одна на яваскрипт, другая на ИеСкрипт. |
Часовой пояс GMT +3, время: 11:46. |