Java equivalente a Explode and Implode (PHP) [fechado]

93

Eu sou novo em Java, embora tenha uma boa experiência em PHP, e procuro um substituto perfeito para explodir e implodir (disponível em PHP) funções em Java.

Pesquisei o mesmo no Google, mas não estou satisfeito com os resultados. Qualquer pessoa que tiver a boa solução para o meu problema será apreciada.

Por exemplo:

String s = "x,y,z";
//Here I need a function to divide the string into an array based on a character.
array a = javaExplode(',', s);  //What is javaExplode?
System.out.println(Arrays.toString(a));

Saída desejada:

[x, y, z]
Pankaj Wanjari
fonte
3
OK, que soluções você encontrou até agora?
Konstantin Yovkov
7
por que esta questão foi rejeitada? e fora do assunto ?? Por favor, sugira evitar para as próximas perguntas.
Pankaj Wanjari
19
Acho que, com base na contagem de visualizações, essa pergunta não é tão ruim assim. Eu concordo que é uma pergunta estranha, mas muitos de nós, programadores de PHP, apenas google para java explodir e receber isso como uma resposta correta.
gorgi93
6
Agora é novembro de 2014 e pesquisei no Google string java string explodir, e essa questão ainda saiu como o principal resultado. Acho que o status 'encerrado como fora do tópico' deve ser retirado, pois isso não está fora do assunto para mim.
Chen Li Yong
3
Fevereiro de 2016, esta questão é o principal resultado para "java explode".
indefinido

Respostas:

139

O Javadoc para String revela que String.split()é isso que você está procurando explode.

Java não inclui um equivalente "implodir" de "junção". Em vez de incluir uma dependência externa gigante para uma função simples, como sugerem as outras respostas, você pode querer escrever apenas algumas linhas de código. Existem várias maneiras de fazer isso; usando um StringBuilderé um:

String foo = "This,that,other";
String[] split = foo.split(",");
StringBuilder sb = new StringBuilder();
for (int i = 0; i < split.length; i++) {
    sb.append(split[i]);
    if (i != split.length - 1) {
        sb.append(" ");
    }
}
String joined = sb.toString();
Brian Roach
fonte
Obrigado pessoal por todas as suas respostas.
Pankaj Wanjari
1
Split realmente usa uma expressão regular (em PHP, Perl, Java, etc.). Se você quiser dividir em outro símbolo, ele precisa ter um escape, como este: String [] split = foo.split ("\\ (");
HoldOffHunger
2
Observe que, desde o Java 8 , temos String#join( documentação ). Para o seu exemplo: String joined = String.join(" ", split);. O método usa a StringJoinerclasse.
Zabuzard
24

String.split() pode fornecer a você um substituto para explode()

Para uma substituição do implode()eu aconselhá-lo a escrever tanto uma função personalizada ou usar Apache Commons 's StringUtils.join()funções.

Menno
fonte
16

Boas alternativas são os métodos String.split e StringUtils.join.

Explodir:

String[] exploded="Hello World".split(" ");

Implodir :

String imploded=StringUtils.join(new String[] {"Hello", "World"}, " ");

Lembre-se de que StringUtils está em uma biblioteca externa.

EnKrypt
fonte
1
Onde você encontra StringUtils? Eu encontro essa classe em com.sun.internal e com.sun.deploy, mas não acho que seja uma boa ideia usar classes diretamente em com.sunpackages such as sun., that are outside of the Java platform, can be different across OS platforms (Solaris, Windows, Linux, Macintosh, etc.) and can change at any time without notice with SDK versions
Arnaud Denoyelle
Ok, depois da sua edição, vejo que esta aula vem de uma biblioteca externa
Arnaud Denoyelle
... que é Appache Commons (eu acho): StringUtils
crusy
4

Não estou familiarizado com PHP, mas acho que String.split é Java equivalente a PHP explode. Quanto a implode, a biblioteca padrão não fornece tal funcionalidade. Você apenas itera sobre seu array e constrói string usando StringBuilder / StringBuffer . Ou você pode experimentar o excelente Google Guava Splitter e Joiner ou split/joinmétodos do Apache Commons StringUtils .

Ivan Sharamet
fonte
1
Todos os links são válidos, exceto para o Guava, pois 3 anos se passaram e eles mudaram para o GitHub. Eu atualizei o comentário com novos links.
Ivan Sharamet
0

se você está falando na referência de String Class. então você pode usar

subString / split

para explodir e usar String

concate

para Implode.

Saunik Singh
fonte
1
concatenão é equivalente a implode.
Richard