Thêm văn bản vào đầu chuỗi


Câu trả lời:


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

Điều này sẽ không làm việc cho bạn?


Mặc dù giải pháp này có vẻ "không hiệu quả" đối với các nhà phát triển đã quen với các thủ thuật được sử dụng trong các ngôn ngữ khác, đây là các thử nghiệm, so sánh giải pháp này với các giải pháp khác: jsperf.com/prepend-text-to-string/5
metalim

Chờ sẽ không sử dụng + = công việc cũng hay nó sẽ thêm nó vào cuối cùng
JuicY_Burrito

2
@JuicY_Burrito Thêm +=vào cuối văn bản.
Mark Kramer

127

Bạn có thể làm theo cách này ..

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

console.log(mystr);

tuyên bố từ chối trách nhiệm: http://xkcd.com/208/


Chờ đã, quên thoát ra một khoảng trống.  Wheeeeee [taptaptap] eeeeee.


13
Tôi muốn ủng hộ điều này cho dải xkcd. Công cụ tuyệt vời! Giải pháp thanh lịch của bạn có lẽ chậm hơn vì nó khởi tạo bộ xử lý biểu thức chính quy.
Rolf

13
@Rolf có lẽ không phải hầu hết. Nó chắc chắn là chậm hơn so với prestring + 'original string';giải pháp.
Gabriele Petrioli

2
@GabrielePetrioli Ưu điểm là bạn có thể chỉ cần thêm vào chuỗi chấm (đường ống) của mình. Bạn thậm chí có thể thêm một cái gì đó, như mystr.replace (/ $ /, 'của Gabriele'). Nó có thể chậm hơn nhưng đó chính xác là những gì tôi đang tìm kiếm.
Mateja Petrovic

2
Có lẽ đây nên là tiêu chuẩn mới: mỗi bài đăng cũng phải bao gồm XKCD có liên quan.
Brett84c,

1
vì lý do nào đó, tôi nghĩ rằng chiếc máy tính trên bàn thực sự là một đứa trẻ trong nôi, và cũng nghĩ thật kỳ lạ khi anh ta đánh đứa bé.
thedanotto

30

Vì câu hỏi là về phương pháp nhanh nhất là gì , tôi nghĩ rằng tôi sẽ bổ sung một số chỉ số hiệu quả.

TL; DR Người chiến thắng, với một biên độ rộng, là +nhà điều hành và vui lòng không bao giờ sử dụng regex

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

nhập mô tả hình ảnh ở đây


1
Vì chúng tôi muốn kiểm tra thêm trước chứ không chỉ nối, nên tôi đã cập nhật các bài kiểm tra: jsperf.com/prepend-text-to-string/5
metalim

@metalim, có bất kỳ thay đổi quan trọng nào mà bạn đã thực hiện đối với các bài kiểm tra không? Thêm vào trước chỉ là một nửa có thứ tự của quá trình nối chuỗi. Ngoài ra, đối với jsPerf, bạn không cần phải ném các trường hợp thử nghiệm vào một vòng lặp; jsPerf gọi mỗi phương thức hàng nghìn lần để lấy điểm cơ bản. Các bài kiểm tra hoàn hảo tối ưu hóa các tình huống cụ thể và tôi không chắc mức độ phổ biến của nó trước 1.000 lần cùng một chuỗi.
KyleMit

Có thể có sự khác biệt đáng kể nếu bạn nối chuỗi ngắn vào dài hoặc chuỗi dài thành ngắn. Vì chúng tôi quan tâm đến việc viết trước chuỗi ngắn thành chuỗi tùy ý, đó là những gì được thực hiện trong các thử nghiệm: viết trước chuỗi ngắn để tăng chuỗi dài hơn. Có các vòng lặp để kiểm tra 1000 độ dài khác nhau của chuỗi hậu tố, để tránh việc kiểm tra chỉ ngắn hoặc dài. @KyleMit, nếu bạn có ý tưởng hay hơn, vui lòng triển khai nó trong lần lặp thử nghiệm tiếp theo.
metalim

14

ES6:

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

7
Mặc dù đoạn mã này có thể giải quyết câu hỏi, bao gồm một lời giải thích thực sự giúp cải thiện chất lượng bài đăng của bạn. Hãy nhớ rằng bạn đang trả lời câu hỏi cho người đọc trong tương lai và những người đó có thể không biết lý do cho đề xuất mã của bạn. Cũng vui lòng cố gắng không chèn mã của bạn bằng các nhận xét giải thích, điều này làm giảm khả năng đọc của cả mã và giải thích!
chèo thuyền kayess

1
ES6: Nội suy chuỗi
Bryan Grace

8

bạn cũng có thể làm theo cách này

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

1
và tại sao không phải là "x" .concat ("y")? Chỉ để thêm một trình tạo chuỗi khác và làm cho nó chậm hơn?
metalim

6

Nếu bạn muốn sử dụng phiên bản Javascript có tên ES 2015 (hay còn gọi là ES6) trở lên, bạn có thể sử dụng các chuỗi mẫu do ES 2015 giới thiệu và được đề xuất bởi một số hướng dẫn (như hướng dẫn kiểu của Airbnb ):

const after = "test";
const mystr = `This is: ${after}`;


0

Bạn có thể dùng

var mystr = "Doe";
mystr = "John " + mystr;
console.log(mystr)
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.