dize

2016-04-12 24 views
1

dizesinin bir örneği metnin birden çok örneği varken ben Ruby bir dize metni kaldırabilirsiniz yapmak nasıl:dize

Ben

okur, böylece "kabloları" kaldırmak istediğiniz
"6 red cables, 4 white cables, 9 blue cables" 

"6 red, 4 white, 9 blue" 

Ben slice ve sub yöntemlerle baktı, ama onlar sadece "kablolar" ilk örneği kaldırın. Birisi bana doğru yönde işaret edebilir mi?

+0

regex düşünün mı? gsub? – Radmation

+0

Dizginizdeki gsub'u ("kablolar", "") arayın. ya da, daha genel olarak, "def" (my_fun (s, x)); s.gsub (x, ''); End ' –

cevap

7

kullanabilirsiniz String#gsub:

2.2.0 :003 > "6 red cables, 4 white cables, 9 blue cables".gsub(" cables", "") 
=> "6 red, 4 white, 9 blue" 
-1

Referans (gsub vs sub karşılaştırır): http://www.dotnetperls.com/sub-ruby

Cevap

cleand_value = "6 red cables, 4 white cables, 9 blue cables".gsub("cables", '') 
Output "6 red , 4 white , 9 blue " 

Açıklama:

value = "abc abc" 
# Gsub replaces all instances. 
value = value.gsub("abc", "---") 
puts value 

Output 

--- --- 

Virgüllerden sonra tüm beyaz boşluklardan aynı şekilde kurtulabilirsiniz.

cleaner_value = cleaned_value.gsub(", ", ",") #replaces all instances 
output "6 red, 4 white, 9 blue" 

Veya diğer çözümler kullanmak ve

cleand_value = "6 red cables, 4 white cables, 9 blue cables".gsub(" cables", '') #notice the space before cables. May cause problems unless you know exactly the input 
+1

Bu," 6 kırmızı, 4 beyaz, 9 mavi "yi döndürür. Bu kabloları kaldırmak için '' kabloları '' '' '' '' '' '' kabloları '' nı değiştirmelisiniz, ancak daha sonra @ Igor'un önceki çözümüne sahipsiniz. –

+0

Lütfen sadece kodu yazmayın. Neden yararlı olduğunu ve neler yaptığını açıklayın. Kodun kendiliğinden çıkarılması, birine bir balık atmak gibidir. Açıklamak, onlara balık tutmayı öğretmek gibidir. Daha sonra daha iyi çünkü bir dahaki sefere ne yapacağını anlayacaklar. –

+0

@theTinMan I yanıtı düzenledim. Tavsiye için teşekkürler, ve benzetmeyi seviyorum ... tanıdık geliyor: D – Radmation