Wiem, że to głupie, ale dziś rano czuję się kreatywny:
'one two, one three, one four, one'
.split(' ')
.reverse()
.join(' ')
.replace(/one/, 'finish')
.split(' ')
.reverse()
.join(' ');
Więc tak naprawdę wszystko, co musiałbyś zrobić, to dodać tę funkcję do prototypu String:
String.prototype.replaceLast = function (what, replacement) {
return this.split(' ').reverse().join(' ').replace(new RegExp(what), replacement).split(' ').reverse().join(' ');
};
Następnie uruchom to tak:
str = str.replaceLast('one', 'finish');
Jedynym ograniczeniem, które powinieneś wiedzieć, jest to, że ponieważ funkcja jest dzielona przez spację, prawdopodobnie nie możesz znaleźć / zastąpić niczego spacją.
Właściwie, teraz, kiedy o tym myślę, możesz obejść problem „przestrzeni”, rozdzielając go pustym tokenem.
String.prototype.reverse = function () {
return this.split('').reverse().join('');
};
String.prototype.replaceLast = function (what, replacement) {
return this.reverse().replace(new RegExp(what.reverse()), replacement.reverse()).reverse();
};
str = str.replaceLast('one', 'finish');