Tengo una cadena con una longitud desconocida que se parece a esto
"dog, cat, bear, elephant, ..., giraffe"
¿Cuál sería la forma óptima de dividir esta cadena en las comas para que cada palabra se convierta en un elemento de una ArrayList?
Por ejemplo
List<String> strings = new ArrayList<Strings>();
// Add the data here so strings.get(0) would be equal to "dog",
// strings.get(1) would be equal to "cat" and so forth.
Respuestas:
Podrías hacer esto:
Básicamente, el
.split()
método dividirá la cadena de acuerdo con el delimitador (en este caso) que está pasando y devolverá una matriz de cadenas.Sin embargo, parece que está detrás de una Lista de cadenas en lugar de una matriz, por lo que la matriz debe convertirse en una lista mediante la
Arrays.asList()
utilidad. Al igual que para su información, también podría hacer algo así:Pero generalmente es una mejor práctica programar en una interfaz en lugar de una implementación concreta real, por lo que recomendaría la primera opción.
fuente
str.split
acepta expresiones regulares para que pueda usarstr.split(",[ ]*");
para eliminar comas y espacios después de las comas.ArrayList<String>
.Bueno, quieres dividirte , ¿verdad?
Si además desea eliminar los espacios en blanco alrededor de los elementos:
fuente
Arrays.asList()
idioma.Puede dividirlo y hacer una matriz y luego acceder como matriz
puedes acceder como
o usando el bucle
Espero que te ayude .
fuente
Una pequeña mejora: las soluciones anteriores no eliminarán los espacios iniciales o finales en la Cadena real. Es mejor llamar a trim antes de llamar a split. En lugar de esto,
utilizar
fuente
("\\s*,\\s*")
solo use(",");
esto resultará igual.trim(" string, with , space ")
será el"string, with , space"
."dog, cat, bear, elephant, giraffe"
entonces no es necesariotrim()
y, en su caso, si se usatrim()
, la salida"string,with,space"
no será esto"string, with , space"
trim()
eliminará todos los espacios, no solo el espacio izquierdo y derecho de la cadena" string, with , space ".trim()
retorno"string, with , space"
. Como dice javadoc: devuelve una copia de la cadena, con espacios en blanco iniciales y finales omitidos. Estás equivocado y @ user872858 tiene razón.Primero puedes dividir nombres como este
para acceder a tus animales
Y también desea eliminar espacios en blanco y comas alrededor de los nombres de los animales
fuente
Para completar, usando la biblioteca Guava , harías:
Splitter.on(",").split(“dog,cat,fox”)
Otro ejemplo:
Splitter.split()
devuelve un Iterable, por lo que si necesita una Lista, envuélvala como se indicaLists.newArrayList()
arriba. De lo contrario, simplemente vaya con el Iterable, por ejemplo:Tenga en cuenta cómo
trimResults()
maneja todas sus necesidades de recorte sin tener que ajustar expresiones regulares para las esquinas , como conString.split()
.Si su proyecto ya usa guayaba, esta debería ser su solución preferida. Consulte la documentación de Splitter en la Guía del usuario de Guava o los javadocs para obtener más opciones de configuración.
fuente
Puede intentar con esto funcionó para mí
si no
fuente
en build.gradle agregue guayaba
y entonces
disfruta :)
fuente
Elimine todos los espacios en blanco y cree una lista de tamaño fijo o inmutable (consulte los
asList
documentos de la API )También es posible usarlo,
replaceAll(\\s+", "")
pero la eficiencia máxima depende del caso de uso. (consulte la respuesta de @GurselKoca para eliminar espacios en blanco de cadenas en Java )fuente
Puedes usar algo como esto:
Además, incluirías las librerías:
fuente
Utilizar este :
fuente
En Kotlin
donde
stringArray
esList<String>
ycommasString
esString
con comas y espaciosfuente
Esta es una manera fácil de dividir cadenas por comas,
fuente
Hay una función llamada
replaceAll()
que puede eliminar todos los espacios en blanco reemplazándolos con lo que desee. Como ejemploTe regalaré:
fuente