Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 我可以在原型方法中修改字符串的内容吗?_Javascript_Node.js_Perl - Fatal编程技术网

Javascript 我可以在原型方法中修改字符串的内容吗?

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

perl有一个很棒的方法叫做chomp()。我可以这样做:

$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:您没有正确读取。Perl
chomp
仅在段落模式下删除所有换行符(当您将行尾标记
$/
显式设置为空字符串时)。在正常操作中,当
$/
为非空(通常包含
“\n”
“\r\n”
)时,它只会删除
$/
的一个副本(如果存在)。@离开我的草坪,
chomp
删除
$//code>(全局变量)的值,该值默认为换行。您描述的行为仅在
$/
包含空字符串时发生,而空字符串不是正常情况。即使OP想要复制这种行为(而且没有任何迹象),添加
/g
也不会有帮助;使用
/\n+$/
将是解决方案。您可能希望添加全局标志,因为这将只替换最后一行,而不是字符串末尾的多个新行…非常确定OP只希望替换最后一行-
,并且它将从结尾删除新行。全局标志需要与多行标志相结合,然后它将删除所有紧跟字符串结尾的换行符,或者如果我正确读取,则删除另一个换行符perl chomp()将删除字符串结尾的所有换行符…@GetOffMyLawn:您没有正确读取。Perl
chomp
仅在段落模式下删除所有换行符(当您将行尾标记
$/
显式设置为空字符串时)。在正常操作中,当
$/
为非空(通常包含
“\n”
“\r\n”
)时,它只会删除
$/
的一个副本(如果存在)。@离开我的草坪,
chomp
删除
$//code>(全局变量)的值,该值默认为换行。您描述的行为仅在
$/
包含空字符串时发生,而空字符串不是正常情况。即使OP想要复制这种行为(而且没有任何迹象),添加
/g
也不会有帮助;使用
/\n+$/
将是一个解决方案。事实上,几乎每次使用
chomp
时,修剪所有尾随空格都是一个更好的选择。不过,如果您提到OP方法不起作用的原因(不可变字符串),那就太好了。事实上,几乎每次使用
chomp
时,修剪所有尾部空白都是一个更好的选择。不过,如果您提到OP方法不起作用的原因(不可变字符串),那就太好了。