Tambahkan teks ke awal string


Jawaban:


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

Bukankah ini bekerja untuk Anda?


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.


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


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}`;

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")

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}`;


0

Kamu bisa memakai

var mystr = "Doe";
mystr = "John " + mystr;
console.log(mystr)
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.