2009-11-30 43 views
49

¿Cuál es el método más simple para eliminar el último carácter del final de una cadena en Scala?Eliminar caracteres del final de un String Scala

Me parece que la clase Rubys String tiene algunos métodos muy útiles como chop. Hubiera usado "oddoneoutz" .headOption en Scala, pero está depreciado. No quiero entrar en el excesivamente complejo:

string.slice(0, string.length - 1) 

Por favor, que alguien me diga que hay un método simple agradable como chuleta de algo tan común.

Respuesta

97

Cómo sobre el uso dropRight, que funciona en 2.8: -

"abc!".dropRight(1) 

que produce "abc"

+0

Lo más escueto que se me ocurre en 2.7 es "abc!". Split (". $) (0) –

+3

Vaya, quiero decir" abc! ". Split (". $ ") (0) –

+0

Gracias excelente Don, Tendré que actualizar a 2.8 :) –

4
string.reverse.substring(1).reverse 

Eso es básicamente chop, ¿verdad? Si anhela un método chop, ¿por qué no escribe su propia biblioteca StringUtils y la incluye en sus proyectos hasta que encuentre un reemplazo adecuado y más genérico?

Oye, mira, está en bienes comunes.

Apache Commons StringUtils.

+3

Seguro que es Stefan. Esperaba un método que cuando miras el código, entiendas lo que está sucediendo :) Lo que estoy diciendo es: Para algo tan simple como "eliminar el último carácter de la cadena" reverse.substring (1) .reverse is engañoso. Gracias por la respuesta –

+0

Además, tendría que envolver la cadena en un StringBuilder para obtener un método inverso. –

+2

La primera parte fue principalmente una broma: P. Cualquier programador de Java que mire su Scala debe estar familiarizado con StringUtils, o al menos conocer la biblioteca de Apache Commons para ver la importación y no ofenderse. Commons es útil y debería usarse siempre que sea posible. Descubrí que la mayoría de los proyectos incluyen recursos comunes en algún momento, por lo que generalmente no hay gastos en el uso de la biblioteca. Incluso podría alias StringUtils como su en sus programas scala y referirse a él como su.chop (str), que es bastante sucinto y no tan sucky como el uso de subcadenas. –

7
val str = "Hello world!" 
str take (str.length - 1) mkString 
+0

+1, gracias @Daniel Spiewak; me llevó a "str drop (str.length -4)", obtiene los últimos 4 de la tarjeta de crédito, justo lo que necesitaba ;-) – virtualeyes

11
string.init // padding for the minimum 15 characters 
+0

Gracias Walter, ese es exactamente el método que pensé que Scala tendría. De nuevo, todos estos buenos métodos son solo 2.8, así que actualiza aquí vengo :) –

1

Si desea que la solución más eficiente que sólo tiene que utilizar:

str.substring(0, str.length - 1) 
Cuestiones relacionadas