2011-02-14 14 views
49

kaldırarak sayılarDizelerden sayıları kaldırarak? dizesinden

questionText = "1 ding ?" 
ben bu sayı ve soru numarasını değiştirmek istiyor

, sayı herhangi bir sayıda olabilir, ben kod çok yakın

questionText.replace(/[0-9]/g, ''); 
+2

Tam olarak ne çalışmıyor? Numarayı kaldırdığı için ... –

+0

Ayrıca ondalık noktaları kaldırmanız mı gerekir? – glowworms

+1

@Berbi Bu soru çift değil.Belirtilen "Değiştir yöntemi çalışmıyor" ifadesi, kullanıcının "Dizeden sayıların kaldırılması" için yazabileceği ve arayabildiği doğru bir başlığa sahip değildir. Kötü ılımlılık. –

cevap

99

çalışma thats aşağıdaki çalıştı, deneyin:

questionText = questionText.replace(/[0-9]/g, ''); 

replace varolan dizede çalışmıyor, yeni bir tane döndürüyor. Onu kullanmak istiyorsan, onu tutmalısın! Aynı anda basamak bütün blokları kaldırmak için

var withNoDigits = questionText.replace(/[0-9]/g, ''); 

Son bir hile, ama bu bir çok ileri gidebilir:
Benzer şekilde, yeni bir değişken kullanabilirsiniz

questionText = questionText.replace(/\d+/g, ''); 
+0

olarak, iyi don Kobi. Beni aynı cevaba dövdün gibi görünüyor. Daha hızlı yazmayı öğrenmeliyim. – Spudley

+0

değiştirebilir miyim? & * bir dizgeden str.replace ("?, *", "") gibi bir metode yer değiştirir; – kiran

+0

çalışmıyor, ikisini de değiştirdim mi? ve * – kiran

8

Sen oldukça yakınsın .

Burada söz konusu yazdığı kod:

questionText.replace(/[0-9]/g, ''); 

Eğer gerçekten questionText değişkene bakılır ve orijinal dize çıktı üretmek, ancak basamak boş değiştirilir gelmez yazdım kod dize. Ancak, otomatik olarak özgün değişkeni tekrar atamaz. Sen atamak ne belirtmek gerekir:

questionText = questionText.replace(/[0-9]/g, ''); 
9

dize immutable olan başlıbaşına questionText.replace(/[0-9]/g, ''); çalışır, bu yüzden ancak questionText-string değişmez. Değiştirmenin sonucunu başka bir String değişkenine atamanız veya tekrar sormanız gerekir.

questionText = ("1 ding ?").replace(/\d+/g,''); 

ve siz bunu yaparken gelen (ve sondaki) alan (lar) kırpmak isterseniz:

var cleanedQuestionText = questionText.replace(/[0-9]/g, ''); 

veya 1 seferde (\d+ kullanarak, Kobi cevabını bakın):

questionText = ("1 ding ?").replace(/\d+|^\s+|\s+$/g,''); 
+0

Tüm regexlerde '/ g' unutma - JavaScript bu şekilde can sıkıcıdır':) ' – Kobi

1

Sadece birine ilgisini çekebilecek beri siz de sorun başka bir yol düşünmek olabileceğini, eklemek istiyorum. Burada ilginin olup olmadığından emin değilim, ama uygun buluyorum. 1:

Ne başka bir yol demek "

var strippedText = (eğer söyleyebiliriz yalnızca 'ding' isterseniz aradığım değil ne bir şey, yani şerit" demek ki ding? ") değiştir (/ [^ a-zA-Z]/g, '');

Temel olarak" nog a, b, c, d .... Z olan her şeyi kaldır "demek mektup).