2009-12-31 31 views
154

tôi cần phải định dạng lại một chuỗi sử dụng jQuery hoặc vani JavascriptThay thế gian với dấu gạch ngang và làm cho tất cả chữ thường

Hãy nói rằng chúng tôi có "Sonic Free Games".

Tôi muốn chuyển đổi nó thành "sonic-free-games".

Vì vậy, khoảng trắng phải được thay thế bằng dấu gạch ngang và tất cả các chữ cái được chuyển đổi thành chữ cái nhỏ.

Bất kỳ trợ giúp nào về điều này, vui lòng?

Trả lời

335

Chỉ cần sử dụng chuỗi replacetoLowerCase phương pháp, ví dụ:

var str = "Sonic Free Games"; 
str = str.replace(/\s+/g, '-').toLowerCase(); 
console.log(str); // "sonic-free-games" 

Thông báo các g cờ trên RegExp, nó sẽ làm cho việc thay thế toàn cầu trong chuỗi, nếu nó không được sử dụng, chỉ có lần xuất hiện đầu tiên sẽ được thay thế và cũng có thể, RegExp sẽ khớp với một hoặc nhiều ký tự khoảng trắng.

+27

Một biến thể tôi đã đưa ra sử dụng \ W đại diện cho bất kỳ ký tự nonalphanumeric. Điều này rất hữu ích cho một cái gì đó như 'A & P Grocery' mà sẽ trở thành 'a-p-tạp hóa'. 'str.replace (/ \ W +/g, '-'). toLowerCase();' –

+1

Tâm không trích dẫn phần regexp, nghĩa là 'thay thế (/ \ s +/g, ..' và ** not **' thay thế ('/ \ s +/f', ..' (không có dấu nháy đơn) –

19

Câu trả lời trên có thể được coi là khó hiểu một chút. Phương thức chuỗi không phải là sửa đổi đối tượng gốc. Họ trả về đối tượng mới. Nó phải là:

var str = "Sonic Free Games"; 
str = str.replace(/\s+/g, '-').toLowerCase(); //new object assigned to var str 
+8

Tôi nghĩ rằng điều quan trọng cần lưu ý là câu trả lời được chấp nhận đã được chỉnh sửa để kết hợp khái niệm này –

+0

@GeorgeJempty cảm ơn vì thông tin đó +1 –

9

Bạn cũng có thể sử dụng splitjoin:

"Sonic Free Games".split(" ").join("-").toLowerCase(); //sonic-free-games 
Các vấn đề liên quan