Ganti spasi dengan tanda hubung dan buat huruf kecil semua huruf


247

Saya perlu memformat ulang string menggunakan jQuery atau JavaScript vanilla

Katakanlah kita punya "Sonic Free Games".

Saya ingin mengubahnya menjadi "sonic-free-games".

Jadi spasi putih harus diganti dengan tanda hubung dan semua huruf dikonversi menjadi huruf kecil.

Tolong ada bantuan untuk ini?

Jawaban:


549

Cukup gunakan String replacedan toLowerCasemetode, misalnya:

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

Perhatikan gbendera pada RegExp, itu akan membuat penggantian global dalam string, jika tidak digunakan, hanya kejadian pertama yang akan diganti, dan juga, yang RegExpakan cocok dengan satu atau lebih karakter spasi putih.


52
Variasi yang saya buat dengan menggunakan \ W yang mewakili karakter nonalphanumeric. Ini berguna untuk sesuatu seperti 'A&P Grocery' yang akan menjadi 'ap-grocery'. str.replace(/\W+/g, '-').toLowerCase();
Adam Waselnuk

1
Pikiran tidak mengutip bagian regexp, yaitu replace(/\s+/g, ..dan tidak replace('/\s+/f', .. (tanpa tanda kutip)
Attila Fulop

Bagaimana jika saya ingin menghapus spasi di awal dan akhir string?
Romel Indemne

@RomelIndemne Saat ini Anda dapat menggunakan String.prototype.trimmetode ini:str.trim().replace(/\s+/g, '-').toLowerCase()
CMS

Terima kasih, bagus. Sekarang saya perlu sebaliknya xD JK
lawphotog

34

Jawaban di atas bisa dianggap sedikit membingungkan. Metode string tidak mengubah objek asli. Mereka mengembalikan objek baru. Itu harus:

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

10
Saya pikir penting untuk dicatat bahwa jawaban yang diterima telah diedit untuk memasukkan konsep ini
Dexygen

31

Anda juga dapat menggunakan splitdan join:

"Sonic Free Games".split(" ").join("-").toLowerCase(); //sonic-free-games

Waspadai kasus-kasus sampingan, misalnya di mana ada ruang di awal, mereka tidak akan diganti
Bonjour123

1

@ Jawaban CMS baik-baik saja, tetapi saya ingin mencatat bahwa Anda dapat menggunakan paket ini: https://github.com/sindresorhus/slugify , yang melakukannya untuk Anda dan mencakup banyak kasus tepi (yaitu, umlaut Jerman, Vietnam, Arab) , Rusia, Rumania, Turki, dll.)


0

var str = "Tatwerat Development Team";
str = str.replace(/\s+/g, '-');
console.log(str);
console.log(str.toLowerCase())

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.