javascript是否有一种方法可以在不创建新字符串的情况下替换字符串的一部分?
除了replace之外,我还可以使用另一种方法来更改字符串,而不给我一个新的字符串对象吗?不,JavaScript中的字符串是不可变的。我不知道,但是如果您这样做的原因只是为了保持代码干净,您可以将新字符串指定给旧变量:javascript是否有一种方法可以在不创建新字符串的情况下替换字符串的一部分?,javascript,string,Javascript,String,除了replace之外,我还可以使用另一种方法来更改字符串,而不给我一个新的字符串对象吗?不,JavaScript中的字符串是不可变的。我不知道,但是如果您这样做的原因只是为了保持代码干净,您可以将新字符串指定给旧变量: var str = "This is a string"; var thing = str.replace("string","thing"); console.log( str ) >> "This is a string" console.log( thi
var str = "This is a string";
var thing = str.replace("string","thing");
console.log( str )
>> "This is a string"
console.log( thing )
>> "This is a thing"
当然,这只会使代码看起来更干净,并且仍然会创建一个新字符串。字符串不可变是有原因的。由于Javascript使用“通过共享调用”技术,在这种情况下,可变字符串将是一个问题:
var string = "This is a string";
string = string.replace("string", "thing");
在这种情况下,您希望字符串按值传递,但事实并非如此。如果str是可变的,thinger会改变str,这将是一个非常奇怪的效果。如前所述,在javascript中,字符串是不可变的。
根据任务的不同,我们可以尝试采用以下方法:
/**faster**.split(…).join(…)
var string='My string'
string=string.split('string').join('thing'))
console.info('with.split-.join',{string})/'我的东西'
//**好酒**。如上文所述,更换(“…”、“…”)
字符串='我的字符串'
string=string.replace('string','thing')
console.info('with.replace',{string})/'My thing'
//**ES6字符串插值**
字符串=(arg)=>`My${arg}`
console.info('with interpolation 1',{string:string('string')})/'My string'
console.info('with interpolation 2',{string:string('thing')})/'My thing'
如果不想创建新变量,可以这样做:string=string.replace(“string”,“thing”)
我建议您在任何语言中定义变量名时都不要使用保留字(如string
)。string
在JavaScript()中不是保留字。但是,str
是未定义的。你把变量名搞砸了!
function thinger(str) {
return str.replace("string", "thing");
}
var str = "This is a str";
var thing = thinger(str);