Eliminar caracteres del final de una cadena Scala


82

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

Encuentro que la clase Rubys String tiene algunos métodos muy útiles como chop . Habría usado "oddoneoutz" .headOption en Scala, pero está depreciado. No quiero meterme en lo demasiado complejo:

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

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

Respuestas:


153

¿Qué tal usar dropRight, que funciona en 2.8: -

"abc!".dropRight(1)

Que produce "abc"


1
Lo más conciso que se me ocurre para 2.7 es "abc!". Split (". $) (0)
Don Mackenzie

3
Vaya, quiero decir "abc!". Split (". $") (0)
Don Mackenzie

Excelente Gracias Don, tendré que actualizar a 2.8 :)
BefittingTheorem

13
string.init // padding for the minimum 15 characters

Gracias Walter, ese es exactamente el método que pensé que tendría Scala. Una vez más, todos estos buenos métodos son solo 2.8, así que actualice aquí vengo :)
BefittingTheorem

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

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


4
string.reverse.substring(1).reverse

Eso es básicamente chuleta, ¿verdad? Si anhela un método de corte, ¿por qué no escribir su propia StringUtilsbiblioteca e incluirla en sus proyectos hasta que encuentre un reemplazo adecuado y más genérico?

Oye, mira, es algo común.

Apache CommonsStringUtils .


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

Además, necesitaría envolver la cadena en un StringBuilder para obtener un método inverso.
Fabian Steeg

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 Apache Commons para ver la importación y no sentirse ofendido. Commons es útil y debe usarse siempre que sea posible. Descubrí que la mayoría de los proyectos incluyen bienes comunes en algún momento, por lo que generalmente no hay ningún gasto para usar la biblioteca. Incluso podría alias StringUtils como su en sus programas scala y referirse a él como su.chop (str), que es bastante conciso y no tan desagradable como usar una subcadena.
Stefan Kendall

Lástima que un implícito para StringUtils sería mucho trabajo. Solo muestra la falta de coincidencia entre la forma en que los usuarios de Scala y los usuarios de Java piensan sobre los métodos de extensión.
Ken Bloom

import org.apache.commons.blah. {StringUtils => su} ¿es mucho trabajo? Idealmente, estaría implementando en un entorno con estas bibliotecas ya establecidas, como dije.
Stefan Kendall
Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.