perl 有一个很棒的方法,称为 chomp()。我可以做这样的事情:
$string.chomp()
它会从末尾删除换行符。我想在 Javascript 中实现相同的功能,但不知道如何修改原型(prototype)定义中的对象:
String.prototype.chomp = function() {
this = this.replace(/\n$/, '')
}
我无法分配给此
。如果我看的话,我会发现 this
是一个带有键 0
的对象,所以我尝试了 this[0] = this[0].replace(/\n$/, '')
但这也不起作用
我可以用对象来做到这一点:
Object.prototype.chomp = function() {
Object.keys(this).forEach(k => this[k] = this[k].replace(/\n$/, ''))
}
但我无法对单个字符串执行此操作。我能施展什么魔法吗?
最佳答案
字符串是不可变的。您必须将 chomp
的结果重新分配给新字符串:
String.prototype.chomp = function() {
return this.replace(/\n$/, '')
};
const foo = `foo
`;
const fooChomped = foo.chomp();
console.log(fooChomped);
console.log(fooChomped.length);
如果要删除字符串末尾的所有换行符,请使用 +
重复 \n
:
String.prototype.chomp = function() {
return this.replace(/\n+$/, '')
};
const foo = `foo
`;
const fooChomped = foo.chomp();
console.log(fooChomped);
console.log(fooChomped.length);
关于javascript - 我可以在原型(prototype)方法中修改字符串的内容吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56160025/