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


93

Sono nuovo in Java anche se ho avuto una buona esperienza in PHP e cerco un sostituto perfetto per le funzioni di esplosione e implodere (disponibile in PHP) in Java.

Ho cercato su Google lo stesso, ma non sono soddisfatto dei risultati. Chiunque abbia la buona soluzione per il mio problema sarà apprezzato.

Per esempio:

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));

Uscita desiderata:

[x, y, z]

3
OK, quali soluzioni hai trovato finora?
Konstantin Yovkov

7
perché questa domanda è stata rifiutata? e fuori tema ?? Si prega di suggerire di evitare per le prossime domande.
Pankaj Wanjari

19
Penso che in base al conteggio delle visualizzazioni questa domanda non sia affatto male. Sono d'accordo che sia una domanda strana, ma molti di noi programmatori PHP solo google per java esplodono e quindi ottengono questa come una risposta corretta.
gorgi93

6
Ora è novembre 2014 e ho cercato su Google che la stringa java esplode, e questa domanda è comunque risultata il risultato migliore. Penso che lo stato "chiuso come fuori tema" dovrebbe essere revocato, poiché questo non è affatto fuori tema per me.
Chen Li Yong

3
Febbraio 2016, questa domanda è il risultato principale di "java explode".
undefined

Risposte:


139

Il Javadoc per String rivela che String.split()è quello che stai cercando in materia di explode.

Java non include un "implode" di "join" equivalente. Piuttosto che includere una gigantesca dipendenza esterna per una semplice funzione come suggeriscono le altre risposte, potresti semplicemente scrivere un paio di righe di codice. Ci sono molti modi per farlo; usando a StringBuilderè uno:

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();

Grazie ragazzi per tutte le vostre risposte.
Pankaj Wanjari

1
Split utilizza effettivamente un'espressione regolare (in PHP, Perl, Java, ecc.). Se vuoi dividere su un altro simbolo, è necessario eseguire l'escape, in questo modo: String [] split = foo.split ("\\ (");
HoldOffHunger

2
Nota che da Java 8 in realtà abbiamo String#join( documentazione ). Per il tuo esempio: String joined = String.join(" ", split);. Il metodo utilizza la StringJoinerclasse.
Zabuzard

24

String.split() può fornirti un sostituto per explode()

Per la sostituzione di implode()sarei consiglio di scrivere sia una funzione personalizzata o utilizzare Apache Commons 's StringUtils.join()funzioni.


16

Buone alternative sono i metodi String.split e StringUtils.join.

Esplodi:

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

Implodere :

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

Tieni presente però che StringUtils è in una libreria esterna.


1
Dove trovi StringUtils? Trovo questo corso in com.sun.internal e com.sun.deploy ma non credo che sia una buona idea usare direttamente i corsi in 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, dopo la tua modifica, vedo che questa lezione proviene da una
libreria

... che è Appache Commons (immagino): StringUtils
crusy


4

Non ho familiarità con PHP, ma penso che String.split sia Java equivalente a PHP explode. Per quanto riguarda implode, la libreria standard non fornisce tale funzionalità. Devi solo iterare sul tuo array e costruire la stringa usando StringBuilder / StringBuffer . Oppure puoi provare l'eccellente Google Guava Splitter and Joiner o i split/joinmetodi di Apache Commons StringUtils .


1
Tutti i collegamenti sono validi tranne Guava, poiché sono passati 3 anni e sono passati a GitHub. Ho aggiornato il commento con nuovi link.
Ivan Sharamet

0

se parli nel riferimento di String Class. così puoi usare

subString / split

per Esplodi e usa String

concedere

per Implode.


1
concatenon è equivalente a implode.
Richard
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.