2009-11-30 22 views
49

Qual è il metodo più semplice per rimuovere l'ultimo carattere dalla fine di una stringa in Scala?Rimuovi caratteri dalla fine di una stringa Scala

Trovo che la classe String di Rubys abbia alcuni metodi molto utili come chop. Avrei usato "oddoneoutz" .headOption in Scala, ma è ammortizzato. Non voglio entrare nel eccessivamente complesso:

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

per favore qualcuno mi dica c'è un bel metodo semplice come chop per qualcosa di questo comune.

risposta

97

Come sull'utilizzo dropRight, che funziona in 2.8: -

"abc!".dropRight(1) 

che produce "abc"

+0

Il più conciso possibile per 2.7 è "abc!". Split (". $) (0) –

+3

Oops intendo" abc! ". Split (". $ ") (0) –

+0

Eccellente grazie Don, Dovrò aggiornare a 2.8 :) –

4
string.reverse.substring(1).reverse 

Questo è fondamentalmente un chop, giusto? Se desideri un metodo di taglio, perché non scrivere la tua libreria StringUtils e includerla nei tuoi progetti fino a trovare una sostituzione adatta e più generica?

Ehi, guarda, è in comune.

Apache Commons StringUtils.

+3

È sicuro che Stefan. Speravo in un metodo che quando guardi il codice, capisci cosa sta succedendo :) Quello che sto dicendo è: per qualcosa di semplice come "rimuovere l'ultimo carattere dalla stringa" reverse.substring (1) .reverse è ingannevole. Grazie per la risposta –

+0

Inoltre avresti bisogno di avvolgere la stringa in un oggetto StringBuilder per ottenere un metodo inverso. –

+2

La prima parte era principalmente una battuta: P. Qualsiasi programmatore Java che guardi la tua Scala dovrebbe avere familiarità con StringUtils, o almeno sapere della libreria Apache Commons per vedere l'importazione e non essere offeso. I Commons sono utili e dovrebbero essere usati dove possibile. Ho scoperto che la maggior parte dei progetti include i comuni ad un certo punto, quindi non c'è generalmente alcuna spesa per usare la libreria. Si potrebbe persino nominare StringUtils come su nei programmi scala e fare riferimento ad esso come su.chop (str), che è piuttosto succinto e non è così schifoso come usare la sottostringa. –

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

+1, grazie @Daniel Spiewak; mi ha portato a "str drop (str.length -4)", ottiene l'ultimo 4 della carta di credito, proprio quello di cui avevo bisogno ;-) – virtualeyes

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

Grazie Walter, questo è esattamente il metodo che pensavo che avrebbe avuto Scala. Ancora una volta tutti questi bei metodi sono solo 2.8, quindi aggiorna qui arrivo :) –

1

Se si desidera che la soluzione più efficace di un semplice usare:

str.substring(0, str.length - 1) 
Problemi correlati