Tambahkan teks ke awal string

Jawaban:

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

Bukankah ini bekerja untuk Anda?

Thor Jacobsen
sumber
Meskipun solusi ini mungkin tampak "tidak efisien" bagi pengembang yang terbiasa dengan trik yang digunakan dalam bahasa lain, berikut adalah pengujian, yang membandingkannya dengan solusi lain: jsperf.com/prepend-text-to-string/5
metalim
Tunggu tidak akan menggunakan + = berfungsi juga atau apakah itu akan menambahkannya sampai akhir
JuicY_Burrito
2
@JuicY_Burrito +=Menambahkan ke akhir teks.
Mark Kramer
127

Anda bisa melakukannya dengan cara ini ..

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

console.log(mystr);

penafian: http://xkcd.com/208/


Tunggu, lupa melarikan diri.  Wheeeeee [taptaptap] eeeeee.

Gabriele Petrioli
sumber
13
Saya tergoda untuk memberi suara positif ini untuk strip xkcd. Barang bagus! Solusi elegan Anda kemungkinan besar lebih lambat karena membuat instance pemroses ekspresi reguler.
Rolf
13
@Rolf tidak mungkin. Ini tentu lebih lambat dari prestring + 'original string';solusinya.
Gabriele Petrioli
2
@GabrielePetrioli Keuntungannya adalah Anda bisa menambahkan ke rantai titik Anda (pipa). Anda bahkan dapat menambahkan sesuatu, seperti jadi mystr.replace (/ $ /, 'oleh Gabriele'). Mungkin lebih lambat tapi itulah yang saya cari.
Mateja Petrovic
2
Mungkin ini harus menjadi standar baru: setiap posting juga harus menyertakan XKCD yang relevan.
Brett84c
1
untuk beberapa alasan saya berpikir bahwa komputer di atas meja sebenarnya adalah bayi di dalam keranjang bayi, dan juga berpikir itu aneh bahwa pria itu memukul bayi.
thedanotto
30

Karena pertanyaannya adalah tentang apa metode tercepat , saya pikir saya akan muntah menambahkan beberapa metrik kinerja.

TL; DR Pemenang, dengan margin lebar, adalah +operator, dan jangan pernah menggunakan regex

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

masukkan deskripsi gambar di sini

KyleMit
sumber
1
Karena kami ingin menguji prepend , dan tidak hanya menggabungkan, saya telah memperbarui pengujian: jsperf.com/prepend-text-to-string/5
metalim
@metalim, apakah ada perubahan materi dari catatan yang Anda buat untuk pengujian? Prepend hanyalah setengah dari rangkaian string yang dipesan. Selain itu, untuk jsPerf, Anda tidak perlu membuang kasus pengujian dalam satu putaran; jsPerf memanggil setiap metode ribuan kali untuk mendapatkan skor dasar. Tes kinerja mengoptimalkan skenario tertentu, dan saya tidak yakin seberapa umum itu menambahkan string yang sama 1.000 kali.
KyleMit
Ada perbedaan yang signifikan jika Anda menambahkan string pendek ke string panjang, atau string panjang ke pendek. Karena kita tertarik dalam prepending string pendek menjadi string arbitrer, itulah yang dilakukan dalam tes: prepending string pendek untuk menambah string yang lebih panjang. Loop ada untuk menguji 1000 panjang string sufiks yang berbeda, untuk menghindari pengujian hanya pendek atau panjang. @KyleMit, jika Anda memiliki ide yang lebih baik, silakan mengimplementasikannya pada iterasi pengujian berikutnya.
metalim
14

ES6:

let after = 'something after';
let text = `before text ${after}`;
Griffi
sumber
7
Meskipun cuplikan kode ini dapat menyelesaikan pertanyaan, menyertakan penjelasan sangat membantu meningkatkan kualitas posting Anda. Ingatlah bahwa Anda menjawab pertanyaan untuk pembaca di masa mendatang, dan orang-orang itu mungkin tidak tahu alasan saran kode Anda. Harap juga mencoba untuk tidak membanjiri kode Anda dengan komentar penjelasan, ini mengurangi keterbacaan kode dan penjelasannya!
kayess
1
ES6: Interpolasi String
Bryan Grace
8

Anda juga bisa melakukannya dengan cara ini

"".concat("x","y")
chirag
sumber
1
dan mengapa tidak "x" .concat ("y")? Hanya untuk menambahkan instansiasi string lain dan membuatnya lebih lambat?
metalim
6

Jika Anda ingin menggunakan versi Javascript yang disebut ES 2015 (alias ES6) atau yang lebih baru, Anda dapat menggunakan string template yang diperkenalkan oleh ES 2015 dan direkomendasikan oleh beberapa pedoman (seperti panduan gaya Airbnb ):

const after = "test";
const mystr = `This is: ${after}`;
Ilan Schemoul
sumber
2

Pilihan lainnya adalah menggunakan join

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

Kamu bisa memakai

var mystr = "Doe";
mystr = "John " + mystr;
console.log(mystr)
Mayank
sumber