substrAfterLast
От: b0r3d0m  
Дата: 18.08.16 14:18
Оценка:
Пофлеймим?

Предположим, имеется функция substrAfterLast, которая возвращает подстроку, начинающуюся с последнего встреченного delimiter'а, переданного в данную функцию.

Реализация на JS:

String.prototype.substrAfterLast = function(delim) {
  return this.substr(this.lastIndexOf(delim) + 1);
};


Пример использования:

var path = '/path/to/file.txt';
console.log(path.substrAfterLast('/)); // file.txt


Как вы считаете, что должна возвращать такая функция в том случае, если в this не было найдено указанного пользователем символа?

var path = 'file.txt';
console.log(path.substrAfterLast('/)); // ???


Пустую строку? Всю исходную строку целиком?

Дискасс.
Re: substrAfterLast
От: fddima  
Дата: 18.08.16 14:22
Оценка:
Здравствуйте, b0r3d0m, Вы писали:

Че тут флеймить.

Если разделитель — последний символ в строке — то пустую строку.

Если разделитель не найден — то None (null/undefined).
Re: substrAfterLast
От: fin_81  
Дата: 18.08.16 15:14
Оценка:
Здравствуйте, b0r3d0m, Вы писали:

B>Пофлеймим?


B>Предположим, имеется функция substrAfterLast, которая возвращает подстроку, начинающуюся с последнего встреченного delimiter'а, переданного в данную функцию.


B>Реализация на JS:


B>
B>String.prototype.substrAfterLast = function(delim) {
B>  return this.substr(this.lastIndexOf(delim) + 1);
B>};
B>


B>...

B>Как вы считаете, что должна возвращать такая функция в том случае, если в this не было найдено указанного пользователем символа?
B>...

B>Пустую строку?

Как отличить от ситуации если разделитель в конце строки?

B>Всю исходную строку целиком?

Хитрый ленивец. Переписывай реализацию. Решил сэкономить на проверке на -1 и вернуть substr(-1 + 1)?
Не слишком ли тяжелая будет проверка на то что разделитель не найден? Будешь проверять равенство строк?
Или по сценарию такая ситуация очень редкая и ты согласен проверять равенство строк при исключительной ситуации.

Можно вернуть null, как признак отсутсвия разделителя.
Re: substrAfterLast
От: · Великобритания  
Дата: 18.08.16 19:14
Оценка: +4
Здравствуйте, b0r3d0m, Вы писали:

b> Пустую строку? Всю исходную строку целиком?

Я бы вообще не писал такую универсальную функцию — применять всё равно универсально негде. Нужна функция получения базового имени файла? Ну так и назови эту функцию так basename. Тогда и однозначностей нет что делать с частными случаями.
avalon/2.0.1
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
Re[2]: substrAfterLast
От: Sinclair Россия https://github.com/evilguest/
Дата: 19.08.16 08:31
Оценка:
Здравствуйте, ·, Вы писали:
·>Я бы вообще не писал такую универсальную функцию — применять всё равно универсально негде. Нужна функция получения базового имени файла? Ну так и назови эту функцию так basename. Тогда и однозначностей нет что делать с частными случаями.
Угу. Потому что GetFileExt("C:\Temp\test") == "", a GetFileLocalPart("test.txt") == "test.txt".
В отличие от substrAfterLast("C:\Temp\test.txt", "\") == "test.txt", и substrAfterLast("C:\Temp\test.txt", ".") == "txt".
Уйдемте отсюда, Румата! У вас слишком богатые погреба.
Re[2]: substrAfterLast
От: fin_81  
Дата: 19.08.16 08:47
Оценка:
Здравствуйте, ·, Вы писали:

·>Здравствуйте, b0r3d0m, Вы писали:


b>> Пустую строку? Всю исходную строку целиком?

·>Я бы вообще не писал такую универсальную функцию — применять всё равно универсально негде. Нужна функция получения базового имени файла? Ну так и назови эту функцию так basename. Тогда и однозначностей нет что делать с частными случаями.

И засунуть его в String.prototype.basename
Re[3]: substrAfterLast
От: · Великобритания  
Дата: 19.08.16 09:07
Оценка: :)
Здравствуйте, fin_81, Вы писали:

b>>> Пустую строку? Всю исходную строку целиком?

_>·>Я бы вообще не писал такую универсальную функцию — применять всё равно универсально негде. Нужна функция получения базового имени файла? Ну так и назови эту функцию так basename. Тогда и однозначностей нет что делать с частными случаями.
_>И засунуть его в String.prototype.basename
А что? Рядом с fontcolor и italics будет неплохо смотреться.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.