Boşlukları tire işaretleri ile değiştirin ve tüm harfleri küçük yapın


247

JQuery veya vanilya JavaScript kullanarak bir dize yeniden biçimlendirmek gerekiyor

Diyelim ki var "Sonic Free Games".

Bunu dönüştürmek istiyorum "sonic-free-games".

Bu yüzden beyaz boşlukların yerine tire ve tüm harfler küçük harfe dönüştürülmelidir.

Bu konuda herhangi bir yardım lütfen?

Yanıtlar:


549

Sadece String replaceve toLowerCaseyöntemleri kullanın, örneğin:

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

gBayrağına dikkat edin, RegExpdeğiştirmeyi dizede global olarak yapar , eğer kullanılmazsa, yalnızca ilk oluşum değiştirilir ve ayrıca RegExpbir veya daha fazla boşluk karakteriyle eşleşir.


52
Geldiğim bir varyasyon, alfasayısal olmayan herhangi bir karakteri temsil eden \ W kullanır. Bu, 'ap-bakkal' olacak 'A&P Market' gibi bir şey için kullanışlıdır. str.replace(/\W+/g, '-').toLowerCase();
Adam Waselnuk

1
Düzenli ifadesi parçası alıntı IE dikkat replace(/\s+/g, ..ve olmayan replace('/\s+/f', .. (kesme olmadan)
Attila Fulop

Dizenin başında ve sonunda boşlukları kaldırmak istersem ne olur?
Romel Indemne

@RomelIndemne Bugünlerde String.prototype.trimyöntemi kullanabilirsiniz :str.trim().replace(/\s+/g, '-').toLowerCase()
CMS

Teşekkürler, iyi biri. Şimdi xD JK etrafında başka bir yol ihtiyacım var
lawphotog

34

Yukarıdaki cevabın biraz kafa karıştırıcı olduğu düşünülebilir. Dize yöntemleri orijinal nesneyi değiştirmiyor . Onlar dönmek yeni bir nesne. Olmalı:

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

10
Kabul edilen cevabın bu kavramı dahil etmek için düzenlendiğini belirtmek önemlidir
Dexygen

31

Ayrıca kullanabilirsiniz splitve join:

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

Yan boşlukların farkında olun, örneğin başlangıçta biraz alan olduğu için bunların yerini
almayacaklar

1

@ CMS'nin cevabı gayet iyi, ancak bu paketi kullanabileceğinizi belirtmek isterim: https://github.com/sindresorhus/slugify , sizin için yapar ve birçok kenar vakayı kapsar (yani, Alman umlautları, Vietnamca, Arapça , Rusça, Rumence, Türkçe vb.).


0

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

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.