文字列の先頭にテキストを追加


回答:


214
var mystr = "Doe";
mystr = "John " + mystr;

これでうまくいきませんか?


:このソリューションは、他の言語で使用されるトリックに慣れ開発者に「非効率的」に見えるかもしれませんが、ここでは他のソリューションにこれを比較し、テストしているjsperf.com/prepend-text-to-string/5
metalim

待機は+ =を使用しないか、またはそれを最後に追加します
JuicY_Burrito

2
@JuicY_Burrito +=テキストの最後に追加します。
Mark Kramer、

127

あなたはこのようにそれをすることができます..

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

console.log(mystr);

免責事項:http : //xkcd.com/208/


待って、スペースを脱出するのを忘れた。 Wheeeeee [taptaptap] eeeeee。


13
私はこれをxkcdストリップに賛成票を投じたくなります。素晴らしいもの!エレガントなソリューションは、正規表現プロセッサをインスタンス化するため、おそらく遅くなります。
ロルフ

13
@ロルフではないでしょう。それは確かにprestring + 'original string';ソリューションよりも遅いです。
Gabriele Petrioli 2017年

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は、各メソッドを数千回呼び出して、スコアのベースラインを取得します。Perfテストは特定のシナリオを最適化しますが、同じ文字列を1,000回前に付加する頻度がよくわかりません。
KyleMit

短い文字列を長い文字列に追加したり、長い文字列を短い文字列に追加したりすると、大きな違いが生じる可能性があります。短い文字列を任意の文字列の前に追加することに関心があるため、テストではそれを行います。短い文字列を追加して、長い文字列を増やします。ループは、短いまたは長いだけのテストを回避するために、サフィックス文字列の1000の異なる長さをテストするためにあります。@KyleMit、より良いアイデアがある場合は、次のテスト反復で自由に実装してください。
メタリム

14

ES6:

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

7
このコードスニペットは問題を解決する可能性がありますが、説明を含めると、投稿の品質を向上させるのに役立ちます。あなたは将来の読者のための質問に答えていることを覚えておいてください、そしてそれらの人々はあなたのコード提案の理由を知らないかもしれません。また、説明コメントでコードを混雑させないようにしてください。これにより、コードと説明の両方が読みにくくなります。
kayess 16

1
ES6:文字列補間
ブライアングレース

8

この方法でもできます

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

1
そして、なぜ「x」.concat(「y」)ではないのですか?別の文字列のインスタンス化を追加して遅くするだけですか?
メタリム



弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.