Java equivalente a Explode e Implode (PHP) [cerrado]

93

Soy nuevo en Java, aunque tuve una buena experiencia en PHP y busco un reemplazo perfecto para las funciones de explosión e implosión (disponible en PHP) en Java.

He buscado en Google lo mismo, pero no estoy satisfecho con los resultados. Cualquiera que tenga la buena solución para mi problema será apreciado.

Por ejemplo:

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

Salida deseada:

[x, y, z]
Pankaj Wanjari
fuente
3
Bien, ¿qué soluciones ha encontrado hasta ahora?
Konstantin Yovkov
7
¿Por qué se rechaza esta pregunta? y fuera de tema ?? Sugiera evitarlo para las siguientes preguntas.
Pankaj Wanjari
19
Creo que, según el recuento de vistas, esta pregunta no es tan mala en absoluto. Estoy de acuerdo en que es una pregunta extraña, pero muchos de nosotros los programadores de PHP simplemente buscamos en Google para Java explotar y luego obtenemos esta como una respuesta correcta.
gorgi93
6
Ahora es noviembre de 2014, y busqué en Google la explosión de cadenas de Java, y esta pregunta aún apareció como el mejor resultado. Creo que el estado 'cerrado como fuera de tema' debería eliminarse, ya que esto no está fuera de tema en absoluto para mí.
Chen Li Yong
3
Febrero de 2016, esta pregunta es el resultado principal de "Java explotar".
undefined

Respuestas:

139

El Javadoc para String revela que eso String.split()es lo que estás buscando explode.

Java no incluye un equivalente de "implosión" de "unión". En lugar de incluir una dependencia externa gigante para una función simple como sugieren las otras respuestas, es posible que solo desee escribir un par de líneas de código. Hay varias formas de lograrlo; usando a StringBuilderes 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();
Brian Roach
fuente
Gracias chicos por todas sus respuestas.
Pankaj Wanjari
1
De hecho, Split usa una expresión regular (en PHP, Perl, Java, etc.). Si desea dividir en otro símbolo, debe escaparse, así: String [] split = foo.split ("\\ (");
HoldOffHunger
2
Tenga en cuenta que desde Java 8 tenemos String#join( documentación ). Para su ejemplo: String joined = String.join(" ", split);. El método usa la StringJoinerclase.
Zabuzard
24

String.split() puede proporcionarle un reemplazo para explode()

Para una sustitución de implode()Me había recomendamos que escribir sea una función personalizada o utilizar Apache Commons 's StringUtils.join()funciones.

Menno
fuente
16

Buenas alternativas son los métodos String.split y StringUtils.join.

Explotar:

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

Implicar:

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

Sin embargo, tenga en cuenta que StringUtils está en una biblioteca externa.

EnKrypt
fuente
1
¿Dónde encuentras StringUtils? Encuentro esta clase en com.sun.internal y com.sun.deploy pero no creo que sea una buena idea usar clases directamente bajo 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
Bien, después de su edición, veo que esta clase proviene de una biblioteca externa
Arnaud Denoyelle
... que es Appache Commons (supongo): StringUtils
crusy
4

No estoy familiarizado con PHP, pero creo que String.split es Java equivalente a PHP explode. En cuanto a implode, la biblioteca estándar no proporciona dicha funcionalidad. Simplemente itera sobre tu matriz y construye una cadena usando StringBuilder / StringBuffer . O puede probar el excelente Google Guava Splitter and Joiner o los split/joinmétodos de Apache Commons StringUtils .

Ivan Sharamet
fuente
1
Todos los enlaces son válidos excepto Guava, ya que pasaron 3 años y se trasladaron a GitHub. Actualicé el comentario con nuevos enlaces.
Ivan Sharamet
0

si está hablando en la referencia de String Class. para que puedas usar

subString / split

para explotar y usar cadena

concate

para Implode.

Saunik Singh
fuente
1
concateno es equivalente a implode.
Richard