Estoy usando el método de división de cadenas y quiero tener el último elemento. El tamaño de la matriz puede cambiar.
Ejemplo:
String one = "Düsseldorf - Zentrum - Günnewig Uebachs"
String two = "Düsseldorf - Madison"
Quiero dividir las cadenas anteriores y obtener el último elemento:
lastone = one.split("-")[here the last item] // <- how?
lasttwo = two.split("-")[here the last item] // <- how?
No sé los tamaños de las matrices en tiempo de ejecución :(
Respuestas:
Guarde la matriz en una variable local y use el
length
campo de la matriz para encontrar su longitud. Reste uno para tener en cuenta que está basado en 0:Advertencia: si la cadena original está compuesta solo por el separador, por ejemplo
"-"
o"---"
,bits.length
será 0 y esto arrojará una ArrayIndexOutOfBoundsException. Ejemplo: https://onlinegdb.com/r1M-TJkZ8fuente
"-"
o"---"
,bits.length
será 0 y esto arrojará una ArrayIndexOutOfBoundsException. Ejemplo: onlinegdb.com/r1M-TJkZ8O podrías usar el
lastIndexOf()
método en Stringfuente
IndexOutOfBoundsException
sistring
no contiene'-'
?IndexOutOfBoundsException
ifstring
contiene'-'
en la última posiciónPuede usar la clase StringUtils en Apache Commons:
fuente
usando un método auxiliar simple pero genérico como este:
puedes reescribir:
como:
fuente
first()
ynth(T[array], int n)
está muy bien hecha de esto.Ahora
lastString
tiene el valor"directory"
fuente
Con guayaba :
Splitter
,Iterables
fuente
Reunimos todas las formas posibles juntos !!
Mediante el uso
lastIndexOf()
ysubstring()
métodos deJava.lang.String
split()
Java SE 1.4 . Divide el texto proporcionado en una matriz.Java 8 secuencial ordenado flujo de una matriz.
Apache Commons Lang jar «
org.apache.commons.lang3.StringUtils
Guava
: Bibliotecas de Google Core para Java. «Com.google.common.base.SplitterSecuencias de comandos para la plataforma Java «Ejecutar Javascript en la JVM con Rhino / Nashorn
Rinoceronte «Rhino es una implementación de código abierto de JavaScript escrita completamente en Java. Por lo general, está incrustado en aplicaciones Java para proporcionar secuencias de comandos a los usuarios finales. Está integrado en J2SE 6 como el motor de secuencias de comandos Java predeterminado.
Nashorn es un motor de JavaScript desarrollado en el lenguaje de programación Java por Oracle. Se basa en la máquina Da Vinci y se ha lanzado con Java 8.
Guía del programador de secuencias de comandos Java
Archivo JavaScript «
StringSplit.js
fuente
Basic
(hay un espacio final), obtendráBasic
como último elemento.Como él estaba pidiendo hacerlo todo en la misma línea usando split, sugiero esto:
Siempre evito definir nuevas variables en la medida de lo posible, y me parece una muy buena práctica.
fuente
IndexOutOfBoundsException
if si la cadena no contiene-
¿Quiere decir que no conoce los tamaños de las matrices en tiempo de compilación? En tiempo de ejecución se pueden encontrar por el valor de
lastone.length
ylastwo.length
.fuente
En java 8
fuente
Supongo que quieres hacer esto en línea. Es posible (aunque un poco de malabares = ^)
tadaa, una línea -> el resultado que desea (si divide en "-" (espacio menos espacio) en lugar de solo "-" (menos) también perderá el espacio molesto antes de la partición = ^) así que "Günnewig Uebachs" en lugar de "Günnewig Uebachs" (con un espacio como primer personaje)
Bonito extra -> no necesita archivos JAR adicionales en la carpeta lib para que pueda mantener su aplicación ligera.
fuente
También puedes usar
java.util.ArrayDeque
fuente