2016-04-13 25 views
1

dizesinden bir dizgeyi filtrelemeye çalışıyorum. Sorun sadece "fdskufh" dan "fd" alt dizesini çıkarmak yerine. Dize "fd" kaldırır, ancak sonra da ikinci f kaldırır, böylece yeni dize "skuh" olur. Herhangi bir öneri çok takdir edilecektir? o s yılında üzerinde tüm karakterleri yineleme olacak ve ch olan herhangi bir karakter filtrelemek için gidiyor: kodun satır ne anlama geldiğini deScala filtre dizgisi

 def stripChars(s:String, ch:String)= s filterNot (ch contains _) 
+2

's.replace (ch," ")'? –

cevap

-1

Look: Aşağıda fonksiyonunu kullanıyoruz. Yani gözlemlediğiniz şey gerçekten beklenecek olan şey. Bu konuda

val regex = "fd".r 
val input = "fdskufh" 

val result = regex.replaceAllIn(input, "") 
+0

Mükemmel çalışıyor! Bunu mümkün olan en kısa zamanda doğru cevap olarak koyacağım. Teşekkürler!!! –

+0

Downvoter: Lütfen bunu neden reddettiğinizi açıklayın. – Jesper

+0

Downvoter değilim, ancak bariz sorun, kaldırılacak dize düzenli ifadeler için özel karakterler içeriyorsa çalışmaz olmasıdır. –

1

Nasıl:

scala> def stripChars(s: String, ch: String) = s.split(ch).mkString 
stripChars: (s: String, ch: String)String 

scala> stripChars("fdskufh", "fd") 
res194: String = skufh 

Bu karakter dizisi var yoksa orijinal dize dönen avantajına sahiptir

Normal bir ifade kullanabilirsiniz.

scala> stripChars("fdskufh", "ff") 
res195: String = fdskufh 

Ve de aşağıdaki için de kullanılabilir:: Yani bu olabilir

scala> stripChars("fdskufhfdsh", "fd") 
res196: String = skufhsh 

DÜZENLEME:

Yoksa tüm bu görmezden ve Sergey önerdi gibi sadece s.replace(ch, "") ile gidebilir