Показать сообщение отдельно
  #8 (permalink)  
Старый 06.02.2019, 20:15
Аватар для Malleys
Профессор
Отправить личное сообщение для Malleys Посмотреть профиль Найти все сообщения от Malleys
 
Регистрация: 20.12.2009
Сообщений: 1,714

{
	
class SplittableString extends String {
	slash(char, offset) {
		if(arguments.length === 0) return this.slash("");
		if(arguments.length === 1) return Number.isFinite(arguments[0]) ?
			this.slash("", arguments[0]) : this.slash(arguments[0], 1);

		var matches = Array.from(str.matchAll(char));
		offset -= char.length;
		if(offset < 0) offset += matches.length + char.length + (char === "" ? -1 : 0);
		var index = matches[offset].index;
		return [str.slice(0, index), str.slice(index + char.length)];
	}
};

var str = new SplittableString('Lorem ipsum dolor sit amet');

console.log(str.slash(' ')); // -> [ 'lorem', 'ipsum dolor sit amet' ]

console.log(str.slash(' ',2)); // -> [ 'lorem ipsum', 'dolor sit amet' ]

console.log(str.slash(' ',-1)); // -> [ 'lorem ipsum dolor sit', 'amet' ]

console.log(str.slash(8)); // -> [ 'lorem ip', 'sum dolor sit amet' ]

console.log(str.slash(-3)); // -> [ 'lorem ipsum dolor sit a', 'met' ]

}
Ответить с цитированием