나는 이것이 어리 석다는 것을 알고 있지만 오늘 아침에는 창의적인 느낌이 듭니다.
'one two, one three, one four, one'
.split(' ') // array: ["one", "two,", "one", "three,", "one", "four,", "one"]
.reverse() // array: ["one", "four,", "one", "three,", "one", "two,", "one"]
.join(' ') // string: "one four, one three, one two, one"
.replace(/one/, 'finish') // string: "finish four, one three, one two, one"
.split(' ') // array: ["finish", "four,", "one", "three,", "one", "two,", "one"]
.reverse() // array: ["one", "two,", "one", "three,", "one", "four,", "finish"]
.join(' '); // final string: "one two, one three, one four, finish"
따라서 실제로해야 할 일은이 함수를 String 프로토 타입에 추가하는 것입니다.
String.prototype.replaceLast = function (what, replacement) {
return this.split(' ').reverse().join(' ').replace(new RegExp(what), replacement).split(' ').reverse().join(' ');
};
그런 다음 다음과 같이 실행하십시오.
str = str.replaceLast('one', 'finish');
알아야 할 한 가지 제한 사항은 함수가 공백으로 분할되므로 공백으로 아무것도 찾거나 바꿀 수 없다는 것입니다 .
사실, 이제 생각 했으니 빈 토큰으로 분할하여 '공간'문제를 해결할 수 있습니다.
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');