2014-01-21 13 views
18

Ich versuche, eine Methode zu erstellen, um Zeichen innerhalb eines Strings zu konvertieren, speziell um alle '0' in '' zu konvertieren. Dies ist der Code, den ich verwende:Ersetzen von Zeichen in einem String in Scala

def removeZeros(s: String) = { 
    val charArray = s.toCharArray 
    charArray.map(c => if(c == '0') ' ') 
    new String(charArray) 
} 

Gibt es einen einfacheren Weg, es zu tun? Diese Syntax ist nicht gültig:

def removeZeros(s: String) = 
    new String(s.toCharArray.map(c => if(c == '0') ' ')) 

Antwort

30

Yo u können Strings direkt Karte:

def removeZero(s: String) = s.map(c => if(c == '0') ' ' else c) 

alternativ könnten Sie replace verwenden:

s.replace('0', ' ') 
22

Ganz einfach:

scala> "FooN00b".filterNot(_ == '0') 
res0: String = FooNb 

Um einige Zeichen durch andere zu ersetzen:

scala> "FooN00b" map { case '0' => 'o' case 'N' => 'D' case c => c } 
res1: String = FooDoob 

Um ein Zeichen mit einer beliebigen Anzahl von Zeichen zu ersetzen:

scala> "FooN00b" flatMap { case '0' => "oOo" case 'N' => "" case c => s"$c" } 
res2: String = FoooOooOob 
+0

ich die Frage wörtlich verstanden werden, um die Nullen zu entfernen. Wenn Sie sie durch ein anderes einzelnes Zeichen ersetzen möchten, funktioniert 'map'. –