2012-05-22 9 views
9

Bir dizgim var ve bunu bir sorguya eklemek için düzeltmem gerekiyor. Satırları tire işaretiyle değiştirme

Ben dize "Her Durum İçin Bir Sepeti" olduğunu varsayalım ve bunu "A-Sepet-For-Her-Amaçlar"

Ben bir boşluk bulup tire ile değiştirmek gerekir olmak istiyorum. Ardından dizede başka bir boşluk olup olmadığını kontrol etmeliyim. Değilse, sabit dizeyi döndürün. Eğer öyleyse, aynı işlemi tekrar çalıştırın.

Bana tekrar eden bir işlev gibi geliyor ama nasıl ayarlanacağından emin değilim. Herhangi bir yardım büyük takdir edilecektir.

cevap

15

Böyle bir düzenli ifade değiştirme kullanabilirsiniz:

var str = "A Basket For Every Occasion"; 
str = str.replace(/\s/g, "-"); 

regex "g" bayrağı tüm boşlukların yerini almak için neden olacaktır.


Tek bir tire ile birden fazla boşluğu daraltmak isteyebilirsiniz, böylece arka arkaya birden çok kısa çizgi ile sonlanamazsınız. Yani bu şekilde görünecektir:

var str = "A Basket For Every Occasion"; 
str = str.replace(/\s+/g, "-"); 
+0

Mükemmel teşekkürler. Bana –

+0

@Tamil izin verirse 8 dakika içinde kabul eder - Yorumunuzu anlamıyorum. OP, global regex'in yerini açıkça bilmiyordu, bu yüzden onları bu konuda eğitiyordum ve tüm bunların SO'nun ruhuyla ve gelecekteki izleyicilerin yararına nasıl işlediğini gösteriyordum. Buna ek olarak, arka arkaya birden çok tire önleyecek bir iyileştirme fikri sundum. Bu sorunun nasıl cevaplanması gerektiğini düşünüyorsunuz? – jfriend00

+0

@ jfriend00 Bir şeyleri yanlış bir yere koymuş olsaydım özür dilerim ama şu ana kadar bir şey denediyse sormuş olabilirdin. Buradan farklı olarak, bir sonraki anı çözmeyi denemek yerine, bir sonraki anı düşünecektir. – Tamil

6

Kullanım yerine ve küresel whitespaces \s (bayrak g) bulmak

var a = "asd asd sad".replace(/\s/g,"-"); 

bir

value = value.split(' ').join('-'); 

I deneyin

"asd-asd-sad" 
+1

upvoted. Teşekkürler. jfriend ilk olsa cevapladı –

4

olur bunu g olarak kullandı ve benim boşluklarımdan kurtul. Tire yerine boş yaptım ve harika çalışıyor. Ayrıca hepsi JS. .split(limiter), sınırlayıcıyı silecek ve dizi parçalarını bir diziye (sınırlayıcı eleman içermeyen) yerleştirecek ve ardından diziye tire ile katılabilirsiniz.