ExplodeおよびImplode(PHP)に相当するJava [終了]


93

私はJavaの初心者ですが、PHPでの経験は豊富ですが、Javaの分解および分解(PHPで利用可能)関数の完全な置き換えを探しています。

私は同じことをGoogleで検索しましたが、結果に満足していません。誰もが私の問題の良い解決策を持っているとありがたいです。

例えば:

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

望ましい出力:

[x, y, z]

3
わかりました、これまでにどのような解決策を見つけましたか?
Konstantin Yovkov 2013年

7
なぜこの質問は反対票ですか?とオフトピック?? 次の質問は避けてください。
Pankaj Wanjari 2013

19
私は、ビュー数に基づいて、この質問はそれほど悪くはないと思います。私はそれが奇妙な質問であることに同意しますが、私たちの多くのPHPプログラマーはJavaをググるだけで爆発し、これを正しい答えとして取得します。
gorgi93 14

6
さて、2014年11月になり、Java文字列が爆発しましたが、この質問はまだトップの結果として出てきました。「オフトピックとしてクローズ」のステータスは解除すべきだと思います。これは私にとってまったくオフトピックではないからです。
Chen Li Yong

3
2016年2月、この質問は「java explode」の主な結果です。
未定義の

回答:


139

StringJavadocは、それString.split()がに関して探しているものであることを明らかにしていますexplode

Javaには、「結合」に相当する「内破」は含まれていません。他の回答が示唆するように、単純な関数に巨大な外部依存関係を含めるのではなく、数行のコードを記述したいだけかもしれません。それを実現する方法はいくつかあります。を使用するStringBuilderと、

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

あなたのすべての答えをありがとう。
Pankaj Wanjari 2013年

1
実際、Splitは正規表現(PHP、Perl、Javaなど)を使用します。別のシンボルで分割する場合は、次のようにエスケープする必要があります。String [] split = foo.split( "\\(");
HoldOffHunger

2
Java 8以降、実際にはString#joinドキュメント)があることに注意してください。あなたの例:String joined = String.join(" ", split);。メソッドはStringJoinerクラスを使用します。
Zabuzard 2018

24

String.split() の代替品を提供できます explode()

代わりにimplode()、カスタム関数を記述するか、Apache CommonsStringUtils.join()関数を使用することをお勧めします。


16

String.splitメソッドとStringUtils.joinメソッドが適切な代替手段です。

爆発:

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

内破:

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

ただし、StringUtilsは外部ライブラリにあることに注意してください。


1
StringUtilsはどこにありますか?私はこのクラスをcom.sun.internalとcom.sun.deployで見つけましたが、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 '27年

OK、編集後、このクラスは外部
ライブラリ

...これは、Appache Commonsだと思います(私は推測します):StringUtils
粗雑な


4

私はPHPに精通していませんが、String.splitはPHPと同等のJava だと思いますexplode。に関してはimplode、standartライブラリはそのような機能を提供しません。StringBuilder / StringBufferを使用して配列を反復処理し、文字列を構築するだけです。または、優れたGoogleグアバ スプリッタージョイナー、またはApache Commons StringUtilsのsplit/joinメソッドを試すこともできます。


1
グアバを除くすべてのリンクは有効です。3年が経過し、GitHubに移動したためです。コメントを新しいリンクで更新しました。
Ivan Sharamet、2016年

0

あなたが文字列クラスの参照で話しているなら。だからあなたは使うことができます

subString / split

分解して文字列を使用

連結する

Implodeの場合。


1
concateはと同等ではありませんimplode
Richard
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.