Javascript 我可以在原型方法中修改字符串的内容吗?
perl有一个很棒的方法叫做chomp()。我可以这样做:Javascript 我可以在原型方法中修改字符串的内容吗?,javascript,node.js,perl,Javascript,Node.js,Perl,perl有一个很棒的方法叫做chomp()。我可以这样做: $string.chomp() 它将从末尾删除一个换行符。我想在Javascript中实现相同的功能,但不知道如何在原型定义中修改对象: String.prototype.chomp=function(){ this=this.replace(/\n$/,“”) } 我无法分配给此。如果我看一下,我看到这个是一个带有键0的对象,所以我尝试了这个[0]=这个[0]。替换(/\n$/,''),但这也不起作用 我可以对对象执行此操作: O
$string.chomp()
它将从末尾删除一个换行符。我想在Javascript中实现相同的功能,但不知道如何在原型定义中修改对象:
String.prototype.chomp=function(){
this=this.replace(/\n$/,“”)
}
我无法分配给此
。如果我看一下,我看到这个是一个带有键0
的对象,所以我尝试了这个[0]=这个[0]。替换(/\n$/,'')
,但这也不起作用
我可以对对象执行此操作:
Object.prototype.chomp=function(){
Object.keys(this.forEach)(k=>this[k]=this[k]。替换(/\n$/,“”))
}
但我一根弦也做不到。我能做些什么吗?字符串是不可变的。您必须将chomp
的结果重新分配给新字符串:
String.prototype.chomp=function(){
返回此。替换(/\n$/,“”)
};
常量foo=`foo
`;
const fooChomped=foo.chomp();
console.log(fooChomped);
console.log(foochonped.length)代码>字符串是不可变的。您必须将chomp
的结果重新分配给新字符串:
String.prototype.chomp=function(){
返回此。替换(/\n$/,“”)
};
常量foo=`foo
`;
const fooChomped=foo.chomp();
console.log(fooChomped);
console.log(foochonped.length)代码>JavaScript有,哪些应该满足您的需求
trim()方法删除字符串两端的空白。此上下文中的空白是所有空白字符(空格、制表符、无换行符等)和所有行结束符字符(LF、CR等)
const str=`
福
酒吧
`;
log(JSON.stringify(str))
console.log(JSON.stringify(str.trimEnd())
JavaScript有,它应该满足您的需要
trim()方法删除字符串两端的空白。此上下文中的空白是所有空白字符(空格、制表符、无换行符等)和所有行结束符字符(LF、CR等)
const str=`
福
酒吧
`;
log(JSON.stringify(str))
console.log(JSON.stringify(str.trimEnd())
字符串本质上是不可变的,因此最好返回this.replace()
的值,而不是将其重新分配给this
。并将其分配给一个新变量。ja。我希望有一种方法可以避免字符串本质上是不可变的,因此最好返回this.replace()
的值,而不是将其重新分配给this
。并将其分配给一个新变量。ja。我希望有一种方法可以避免您可能希望添加全局标志,因为这将只替换最后一行,而不是字符串末尾的多个新行……非常确定OP只希望替换最后一行-,并且它将从末尾删除一个新行。全局标志需要与多行标志相结合,然后它将删除所有紧跟字符串结尾的换行符,或者如果我正确读取,则删除另一个换行符perl chomp()将删除字符串结尾的所有换行符…@GetOffMyLawn:您没有正确读取。Perlchomp
仅在段落模式下删除所有换行符(当您将行尾标记$/
显式设置为空字符串时)。在正常操作中,当$/
为非空(通常包含“\n”
或“\r\n”
)时,它只会删除$/
的一个副本(如果存在)。@离开我的草坪,chomp
删除$//code>(全局变量)的值,该值默认为换行。您描述的行为仅在$/
包含空字符串时发生,而空字符串不是正常情况。即使OP想要复制这种行为(而且没有任何迹象),添加/g
也不会有帮助;使用/\n+$/
将是解决方案。您可能希望添加全局标志,因为这将只替换最后一行,而不是字符串末尾的多个新行…非常确定OP只希望替换最后一行-,并且它将从结尾删除新行。全局标志需要与多行标志相结合,然后它将删除所有紧跟字符串结尾的换行符,或者如果我正确读取,则删除另一个换行符perl chomp()将删除字符串结尾的所有换行符…@GetOffMyLawn:您没有正确读取。Perlchomp
仅在段落模式下删除所有换行符(当您将行尾标记$/
显式设置为空字符串时)。在正常操作中,当$/
为非空(通常包含“\n”
或“\r\n”
)时,它只会删除$/
的一个副本(如果存在)。@离开我的草坪,chomp
删除$//code>(全局变量)的值,该值默认为换行。您描述的行为仅在$/
包含空字符串时发生,而空字符串不是正常情况。即使OP想要复制这种行为(而且没有任何迹象),添加/g
也不会有帮助;使用/\n+$/
将是一个解决方案。事实上,几乎每次使用chomp
时,修剪所有尾随空格都是一个更好的选择。不过,如果您提到OP方法不起作用的原因(不可变字符串),那就太好了。事实上,几乎每次使用chomp
时,修剪所有尾部空白都是一个更好的选择。不过,如果您提到OP方法不起作用的原因(不可变字符串),那就太好了。