Eu tenho uma String com um comprimento desconhecido que se parece com isso
"dog, cat, bear, elephant, ..., giraffe"
Qual seria a maneira ideal de dividir essa sequência de vírgulas para que cada palavra se tornasse um elemento de um ArrayList?
Por exemplo
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.
Respostas:
Você pode fazer isso:
Basicamente, o
.split()
método dividirá a string de acordo com o delimitador (neste caso) que você está passando e retornará uma matriz de strings.No entanto, você parece estar atrás de uma Lista de seqüências de caracteres em vez de uma matriz, portanto, a matriz deve ser transformada em uma lista usando o
Arrays.asList()
utilitário Assim como um FYI, você também pode fazer algo assim:Mas geralmente é uma prática melhor programar para uma interface do que para uma implementação concreta real, então eu recomendaria a 1ª opção.
fonte
str.split
aceita regex para que você possa usarstr.split(",[ ]*");
para remover vírgulas e espaços após vírgulas.ArrayList<String>
.Bem, você quer dividir , certo?
Se você quiser se livrar adicionalmente de espaços em branco ao redor dos itens:
fonte
Arrays.asList()
idioma.Você pode dividir e criar uma matriz e acessar como matriz
você pode acessar como
ou usando loop
espero que ajude você.
fonte
Uma pequena melhoria: as soluções acima não removerão espaços iniciais ou finais na String real. É melhor chamar corte antes de chamar divisão. Em vez disso,
usar
fonte
("\\s*,\\s*")
basta usar(",");
os resultados.trim(" string, with , space ")
será"string, with , space"
."dog, cat, bear, elephant, giraffe"
, então não precisa detrim()
e no caso ur se o usotrim()
, em seguida, colocar para fora será"string,with,space"
não este"string, with , space"
trim()
irá remover todos os espaços não apenas para a esquerda e direita espaço de corda" string, with , space ".trim()
retorna"string, with , space"
. Como javadoc diz: retorna uma cópia da string, com espaços em branco à esquerda e à direita omitidos. Você está errado e @ user872858 está certo.Primeiro você pode dividir nomes como este
Acessar seus animais
E você também deseja remover espaços em branco e vírgula em torno de nomes de animais
fonte
Para ser completo, usando a biblioteca Guava , você deve:
Splitter.on(",").split(“dog,cat,fox”)
Outro exemplo:
Splitter.split()
retorna um iterável; portanto, se você precisar de uma lista, envolva-aLists.newArrayList()
como acima. Caso contrário, basta ir com o Iterable, por exemplo:Observe como
trimResults()
lida com todas as suas necessidades de corte sem precisar ajustar as expressões regulares para caixas de canto , como acontece comString.split()
.Se o seu projeto já usa o Guava, essa deve ser a sua solução preferida. Consulte a documentação do Splitter no Guava User Guide ou os javadocs para obter mais opções de configuração.
fonte
Pode tentar com isso funcionou para mim
se não
fonte
no build.gradle adicione Guava
e depois
desfrutar :)
fonte
Remova todos os espaços em branco e crie uma lista de tamanho fixo ou imutável (consulte os
asList
documentos da API )Também é possível usar,
replaceAll(\\s+", "")
mas a eficiência máxima depende do caso de uso. (consulte a resposta do @GurselKoca para Remover espaços em branco das strings em Java )fonte
Você pode usar algo como isto:
Além disso, você incluiria as bibliotecas:
fonte
Usa isto :
fonte
Em Kotlin,
onde
stringArray
estáList<String>
ecommasString
estáString
com vírgulas e espaçosfonte
Essa é uma maneira fácil de dividir uma string por vírgula,
fonte
Existe uma função chamada
replaceAll()
que pode remover todos os espaços em branco, substituindo-os pelo que você quiser. Como um exemploDarei à você:
fonte