Pytanie Explode i Implode (podobnie jak PHP) w Javie [zamknięte]


Jestem nowicjuszem w Javie, chociaż miałem dobre doświadczenie w PHP i szukałem idealnego zamiennika dla funkcji eksplodującej i implode (dostępnej w PHP) w Javie.

Mam Googled dla tego samego, ale nie zadowolony z wyników. Każdy ma dobre rozwiązanie, ponieważ mój problem zostanie doceniony.

Na przykład:

String s = "x,y,z";
array a = javaExplode(',',s);  //what is javaExplode??
System.out.println(Arrays.toString(a));

Pożądane wyjście:

[x, y, z]

76
2018-05-27 12:50


pochodzenie


OK, jakie rozwiązania znalazłeś do tej pory? - Konstantin Yovkov
dlaczego to pytanie jest przegłosowane? i poza tematem ?? Proszę sugerować, aby unikać kolejnych pytań. - Pankaj Wanjari
Myślę, że na podstawie liczby wyświetleń to pytanie wcale nie jest takie złe. Zgadzam się, to dziwne pytanie, ale wielu z nas programistów PHP po prostu google eksploduje java, a następnie uzyskać to jako poprawną odpowiedź. - gorgi93
Teraz jest listopad 2014 r., A wyszukiwany w Google java string eksploduje, a to pytanie wciąż stanowi najwyższy wynik. Uważam, że status "zamknięty jako nietypowy" powinien zostać zniesiony, ponieważ nie jest to dla mnie wcale temat wyłączony. - Chen Li Yong
W lutym 2016 r. To pytanie jest głównym rezultatem "eksplozji java". - GustavoMP


Odpowiedzi:


The Javadoc dla String ujawnia to String.split() jest to, czego szukasz w odniesieniu do explode.

Java nie zawiera "imploduja" odpowiednika "join". Zamiast zawierać gigantyczną zewnętrzną zależność dla prostej funkcji, jak sugerują inne odpowiedzi, możesz po prostu napisać kilka linii kodu. Istnieje wiele sposobów, aby to osiągnąć; używać StringBuilder jest jeden:

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

119
2018-05-27 13:23



Dzięki wam za wszystkie odpowiedzi. - Pankaj Wanjari
Split rzeczywiście używa wyrażeń regularnych (w PHP, Perl, Java itp.). Jeśli chcesz podzielić na inny symbol, musi on zostać zmieniony w następujący sposób: String [] split = foo.split ("\\ ("); - HoldOffHunger
Zauważ, że od Java 8 tak naprawdę mamy String#join (dokumentacja). Dla Twojego przykładu: String joined = String.join(" ", split);. Metoda korzysta z StringJoiner klasa. - Zabuza


String.split() może zapewnić zastępstwo explode()

Aby wymienić zamiennik implode() Radziłbym ci napisać funkcję niestandardową lub użyć Apache Commons„s StringUtils.join() Funkcje.


19
2018-05-27 12:55





Dobrymi alternatywami są metody String.split i StringUtils.join.

Rozbij:

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

Implode:

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

Pamiętaj jednak, że StringUtils znajduje się w zewnętrznej bibliotece.


12
2018-05-27 12:57



Gdzie znajdziesz StringUtils? Tę klasę znajduję w com.sun.internal i com.sun.deploy, ale nie sądzę, że dobrym pomysłem jest bezpośrednie użycie klas w com.sun packages 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, po twojej edycji widzę, że ta klasa pochodzi z zewnętrznej biblioteki - Arnaud Denoyelle
...który jest Appache Commons (Zgaduję): StringUtils - crusy


java.lang.String.split(String regex) jest tym, czego szukasz.


4
2018-05-27 12:55





Nie znam PHP, ale myślę String.split jest odpowiednikiem języka Java w PHP explode. Co się tyczy implodebiblioteka standart nie zapewnia takiej funkcjonalności. Po prostu przeglądasz swoją tablicę i budujesz ciąg za pomocą StringBuilder/StringBuffer. Lub możesz spróbować doskonale Google Guava  Rozłupnik i Stolarz lub split/join metody z Apache Commons  StringUtils.


3
2018-05-27 13:02



Linki nie działają - marbel82
Wszystkie linki są ważne, z wyjątkiem Guawy, ponieważ minęły 3 lata i przeszły na GitHub. Zaktualizowałem komentarz nowymi linkami. - Ivan Sharamet


jeśli mówisz w odniesieniu do klasy String. więc możesz użyć

subString / split

for Explode & use String

skoncetrować

dla Implode.


0
2018-05-27 12:55



concate nie jest równoważne implode. - Richard