web-dev-qa-db-fra.com

Remplacement des caractères d'une chaîne dans Scala

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

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

Existe-t-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') ' '))
23
Hanxue

Vous pouvez mapper des chaînes directement:

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

vous pouvez également utiliser replace:

s.replace('0', ' ')
41
Lee

Très simple:

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

Pour 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
25
Randall Schulz

Selon Ignacio Alorre, si vous souhaitez remplacer d'autres caractères en chaîne:

def replaceChars (str: String) = str.map(c => if (c == '0') ' ' else if (c =='T') '_' else if (c=='-') '_' else if(c=='Z') '.' else c)

val charReplaced = replaceChars("N000TZ")
0
josh