Explode and Implode (PHP) ile eşdeğer Java [kapalı]


94

Java'da yeniyim, ancak PHP'de iyi bir deneyimim oldu ve Java'da patlatma ve implode (PHP'de mevcut) işlevleri için mükemmel bir yedek arıyorum.

Aynı şeyi Google'da araştırdım ancak sonuçlardan memnun kalmadım. Sorunum için iyi bir çözüme sahip olan herkes takdir edilecektir.

Örneğin:

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

Istenilen çıktı:

[x, y, z]

3
Tamam, şu ana kadar hangi çözümleri buldunuz?
Konstantin Yovkov

7
bu soru neden olumsuz oylandı? ve konu dışı? Lütfen sonraki sorulardan kaçınmayı önerin.
Pankaj Wanjari

19
Görüntüleme sayısına göre bu sorunun o kadar da kötü olmadığını düşünüyorum. Garip bir soru olduğuna katılıyorum, ancak çoğumuz PHP programcıları java için google patlar ve sonra bunu doğru bir cevap olarak alırız.
gorgi93

6
Şimdi Kasım 2014 ve Google'da java dizesi patladı ve bu soru hala en iyi sonuç olarak ortaya çıktı. Bu benim için hiç konu dışı olmadığından 'konu dışı olarak kapatıldı' statüsünün kaldırılması gerektiğini düşünüyorum.
Chen Li Yong

3
Şubat 2016, bu soru "java patlaması" nın ana sonucudur.
tanımlanmamış

Yanıtlar:


140

Dize için Javadoc ortaya koymaktadır String.split()sen açısından aradığınızı olduğunu explode.

Java, "birleştirme" eşdeğeri "implode" içermez. Diğer cevapların önerdiği gibi basit bir işlev için devasa bir dış bağımlılık eklemek yerine, sadece birkaç satır kod yazmak isteyebilirsiniz. Bunu başarmanın birkaç yolu var; a kullanmak StringBuilderbirdir:

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

Tüm cevaplarınız için teşekkürler çocuklar.
Pankaj Wanjari

1
Split gerçekten de düzenli bir ifade kullanır (PHP, Perl, Java, vb.). Başka bir sembole bölmek istiyorsanız, şu şekilde öncelenmesi gerekir: String [] split = foo.split ("\\ (");
HoldOffHunger

2
Java 8'den beri aslında String#join( belgelere ) sahip olduğumuzu unutmayın . Senin Örneğin: String joined = String.join(" ", split);. Yöntem StringJoinersınıfı kullanır .
Zabuzard

24

String.split() size bir yedek sağlayabilir explode()

Bir yedek için implode()I tavsiye ediyorum size özel bir işlev veya kullanım ya yazmaya Apache Commons 'ın StringUtils.join()fonksiyonları.


16

İyi alternatifler String.split ve StringUtils.join yöntemleridir.

Patlat:

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

Implode:

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

StringUtils'in harici bir kitaplıkta olduğunu unutmayın.


1
StringUtils'i nerede buluyorsunuz? Bu dersi com.sun.internal ve com.sun.deploy'da buluyorum ama sınıfları doğrudan com.sun altında kullanmanın iyi bir fikir olduğunu düşünmüyorumpackages 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

Tamam, düzenlemenizden sonra, bu sınıfın harici bir kütüphaneden geldiğini görüyorum
Arnaud Denoyelle

... hangisi Appache Commons (sanırım): StringUtils
crusy


4

PHP'ye aşina değilim, ancak String.split'in Java'nın PHP'ye eşdeğer olduğunu düşünüyorum explode. Gelince implode, standart kütüphane böyle işlevsellik sağlamaz. Sadece dizinizi yineleyin ve StringBuilder / StringBuffer kullanarak dizeyi oluşturun . Veya mükemmel Google Guava Splitter ve Joiner'ı veya Apache Commons StringUtils'insplit/join yöntemlerini deneyebilirsiniz .


1
3 yıl geçtiği için Guava dışındaki tüm linkler geçerlidir ve GitHub'a taşındılar. Yorumu yeni bağlantılarla güncelledim.
Ivan Sharamet

0

String Class referansından bahsediyorsanız. yani kullanabilirsin

subString / bölme

Explode & use String için

içiçe

Implode için.


1
concateeşdeğer değildir implode.
Richard
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.