perl有一个很棒的方法,称为chomp()。我可以做类似的事情:
$string.chomp()
,它将从末尾删除换行符。我想在Javascript中实现相同的功能,但无法弄清楚如何在原型定义中修改对象:
String.prototype.chomp = function() {
this = this.replace(/\n$/, '')
}
我无法分配给this
。如果我看的话,我发现this
是带有键0
的对象,所以我尝试了this[0] = this[0].replace(/\n$/, '')
,但这也不起作用
我可以使用对象进行此操作
Object.prototype.chomp = function() {
Object.keys(this).forEach(k => this[k] = this[k].replace(/\n$/, ''))
}
但是我不能为单个字符串做到这一点。我能做些魔术吗?
答案 0 :(得分:2)
字符串是不可变的。您必须将chomp
的结果重新分配给新字符串:
String.prototype.chomp = function() {
return this.replace(/\n$/, '')
};
const foo = `foo
`;
const fooChomped = foo.chomp();
console.log(fooChomped);
console.log(fooChomped.length);
如果您要从字符串末尾删除 all 个换行符,请用\n
重复+
,
String.prototype.chomp = function() {
return this.replace(/\n+$/, '')
};
const foo = `foo
`;
const fooChomped = foo.chomp();
console.log(fooChomped);
console.log(fooChomped.length);
答案 1 :(得分:0)