将文本放在字符串的开头


Answers:



127

你可以这样子..

var mystr = 'is my name.';
mystr = mystr.replace (/^/,'John ');

console.log(mystr);

免责声明:http//xkcd.com/208/


等一下,忘了逃脱空间。 Wheeeeee [taptaptap] eeeeee。


13
我很想为xkcd条投票。好东西!您的优雅解决方案很可能较慢,因为它实例化了正则表达式处理器。
罗尔夫(Rolf)

13
@Rolf不太可能。这肯定prestring + 'original string';解决方案慢。
加布里埃莱·彼得里奥里

2
@GabrielePetrioli优点是您可以将其添加到点链(管道)中。您甚至可以附加一些内容,例如mystr.replace(/ $ /,'by Gabriele')。它可能会比较慢,但这正是我想要的。
Mateja Petrovic,

2
也许这应该是新标准:每个帖子还必须包含相关的XKCD。
Brett84c

1
由于某种原因,我认为桌子上的计算机实际上是摇篮里的婴儿,并且还以为那个家伙在打婴儿很奇怪。
thedanotto

30

由于问题在于最快的方法是什么,我想我会添加一些性能指标。

TL; DR赢家很大程度上是+操作员,不要使用正则表达式

https://jsperf.com/prepend-text-to-string/1

在此处输入图片说明


1
因为我们要测试prepend,而不仅仅是连接测试,所以我更新了测试:jsperf.com/prepend-text-to-string/5
metalim

@metalim,您对测试所做的笔记是否有实质性变化?前缀只是字符串连接的有序一半。另外,对于jsPerf,您不需要将测试用例循环放入;jsPerf调用每种方法数千次,以获得分数的基准。性能测试可以优化特定的场景,但我不确定在相同的字符串上添加1000次常见的情况。
KyleMit

如果将短字符串附加到long或将长字符串附加到short,则可能会有很大的不同。由于我们有兴趣将短字符串添加为任意字符串,因此可以在测试中完成:将短字符串添加为增加较长的字符串。循环可以测试1000个不同长度的后缀字符串,以避免测试太短或太长。@KyleMit,如果您有更好的主意,请随时在下一个测试迭代中实施它。
metalim '19

14

ES6:

let after = 'something after';
let text = `before text ${after}`;

7
尽管此代码段可以解决问题,但提供说明确实有助于提高您的帖子质量。请记住,您将来会为读者回答这个问题,而这些人可能不知道您提出代码建议的原因。也请尽量不要在代码中加入解释性注释,这会降低代码和解释的可读性!
kayess

1
ES6:字符串插值
Bryan Grace

8

你也可以这样

"".concat("x","y")

1
为什么不使用“ x” .concat(“ y”)?只是添加另一个字符串实例化并使其变慢?
metalim


2

另一种选择是使用连接

var mystr = "Matayoshi";
mystr = ["Mariano", mystr].join(' ');

0

您可以使用

var mystr = "Doe";
mystr = "John " + mystr;
console.log(mystr)
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.