Java équivalent à Explode and Implode (PHP) [fermé]


93

Je suis nouveau en Java, bien que j'ai une bonne expérience en PHP, et je recherche un remplacement parfait pour les fonctions d'explosion et d'implosion (disponibles en PHP) en Java.

J'ai cherché la même chose sur Google mais je ne suis pas satisfait des résultats. N'importe qui a la bonne solution pour mon problème sera apprécié.

Par exemple:

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

Sortie désirée:

[x, y, z]

3
OK, quelles solutions avez-vous trouvées jusqu'à présent?
Konstantin Yovkov

7
pourquoi cette question est votée à la baisse? et hors sujet ?? Veuillez suggérer d'éviter pour les prochaines questions.
Pankaj Wanjari

19
Je pense que d'après le nombre de vues, cette question n'est pas si grave du tout. Je suis d'accord que c'est une question étrange, mais beaucoup d'entre nous, les programmeurs PHP, ne font que google pour java et obtiennent ensuite une réponse correcte.
gorgi93

6
Nous sommes maintenant en novembre 2014, et j'ai recherché sur Google une chaîne java exploser, et cette question est toujours apparue comme le meilleur résultat. Je pense que le statut «fermé car hors sujet» devrait être levé, car ce n'est pas du tout hors sujet pour moi.
Chen Li Yong

3
Février 2016, cette question est le résultat principal de "java explode".
undefined

Réponses:


139

Le Javadoc for String révèle que String.split()c'est ce que vous recherchez explode.

Java n'inclut pas un équivalent «implode» ou «join». Plutôt que d'inclure une dépendance externe géante pour une fonction simple comme le suggèrent les autres réponses, vous voudrez peut-être simplement écrire quelques lignes de code. Il y a plusieurs façons d'y parvenir; en utilisant a StringBuilderest un:

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

Merci les gars pour toutes vos réponses.
Pankaj Wanjari

1
Split utilise en effet une expression régulière (en PHP, Perl, Java, etc.). Si vous voulez diviser sur un autre symbole, il doit être échappé, comme ceci: String [] split = foo.split ("\\ (");
HoldOffHunger

2
Notez que depuis Java 8, nous avons en fait String#join( documentation ). Pour votre exemple: String joined = String.join(" ", split);. La méthode utilise la StringJoinerclasse.
Zabuzard le

24

String.split() peut vous fournir un remplacement pour explode()

Pour remplacer, implode()je vous conseille d 'écrire une fonction personnalisée ou d' utiliser lesStringUtils.join() fonctions d ' Apache Commons .


16

Les bonnes alternatives sont les méthodes String.split et StringUtils.join.

Exploser:

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

Imploser:

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

Gardez à l'esprit que StringUtils est dans une bibliothèque externe.


1
Où trouvez-vous StringUtils? Je trouve cette classe dans com.sun.internal et com.sun.deploy mais je ne pense pas que ce soit une bonne idée d'utiliser directement les classes sous 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, après ton montage, je vois que cette classe provient d'une lib externe
Arnaud Denoyelle

... qui est Appache Commons (je suppose): StringUtils
crusy


4

Je ne suis pas familier avec PHP, mais je pense que String.split est l'équivalent Java de PHP explode. Quant à implode, la bibliothèque standart ne fournit pas une telle fonctionnalité. Vous parcourez simplement votre tableau et créez une chaîne à l'aide de StringBuilder / StringBuffer . Ou vous pouvez essayer d'excellents Google Guava Splitter and Joiner ou des split/joinméthodes d' Apache Commons StringUtils .


1
Tous les liens sont valides sauf pour Guava, depuis 3 ans passés et ils ont déménagé sur GitHub. J'ai mis à jour le commentaire avec de nouveaux liens.
Ivan Sharamet

0

si vous parlez dans la référence de String Class. afin que vous puissiez utiliser

sousString / split

pour exploser et utiliser une chaîne

concate

pour Implode.


1
concaten'est pas équivalent à implode.
Richard
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.