Remplacer les caractères dans une chaîne de caractères en Scala

j'essaie de créer une méthode pour convertir les caractères dans une chaîne, en convertissant spécifiquement tous les '0' en'. C'est le code que j'utilise:

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

Est-il un moyen plus simple de le faire? Cette syntaxe n'est pas valide:

def removeZeros(s: String) = 
  new String(s.toCharArray.map( c => if(c == '0') ' '))
21
demandé sur Machavity 2014-01-21 19:03:55

2 réponses

vous pouvez mapper les chaînes directement:

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

vous pouvez également utiliser replace:

s.replace('0', ' ')
34
répondu Lee 2014-01-21 15:10:42

Très simple:

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

remplacer certains caractères par d'autres:

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

pour remplacer un caractère par un nombre arbitraire de caractères:

scala> "FooN00b" flatMap { case '0' => "oOo"  case 'N' => ""  case c => s"$c" }
res2: String = FoooOooOob
22
répondu Randall Schulz 2014-01-21 15:29:16