2011-07-17 25 views
7

en Java, puedo hacerlo con commons-lang:¿Cómo recortar los espacios en blanco finales de una cuerda?

StringUtils.stripEnd(" abc \t", null) // => " abc" 

me gustaría saber si hay algún método integrado para realizar esta acción en Scala, o cómo hacerlo en Scala, sin ninguna dependencia de 3 ª parte ?

+1

Dado que Java es completamente interoperable con Scala, y cadenas de Scala son en realidad los hilos de Java se puede utilizar la misma línea de código que ya ha proporcionado. ¿O preguntas sobre una forma idiomática de hacer eso en Scala? – agilesteel

+0

@agilestell, tienes razón. Permítanme actualizar la pregunta – Freewind

+0

posible duplicado: http://stackoverflow.com/questions/2269509/scala-string-chomp Comprobar * respuesta de * réplica *. – paradigmatic

Respuesta

8

Puede hacerlo con una expresión regular:

" string ".replaceAll("\\s+$", ""); 
res0: java.lang.String = " string" 
+0

¿No sería suficiente 'replaceFirst' aquí en lugar de' replaceAll'? –

2

Sin dependencias externas y sólo recorte extremo:

scala> val s = " test \t" 
s: java.lang.String = " test  " 

scala> val Regex = """^(.*?)\s*$""".r 
Regex: scala.util.matching.Regex = ^(.*?)\s*$ 

scala> val Regex(trimmed) = s 
trimmed: String = " test" 
+0

¡gracias! ¡Esto es tierno! – Freewind

+0

¿Es posible escribir en una sola línea? – Freewind

+0

no, necesita declarar el extractor como val primero –

5

Otra forma posible es utilizar el método dropWhile de clase rica String llamado StringOps

scala> val y = " abcd ".reverse.dropWhile(_ == ' ').reverse 
y: String = " abcd" 

Si necesita recortar espacios desde el comienzo de la cadena acaba de eliminar reverse métodos:

scala> val y = " abcd ".dropWhile(_ == ' ') 
y: String = "abcd " 
+0

+1 ¡Guau, esto estuvo bien! – Jonas

Cuestiones relacionadas