Java tương đương với Explode và Implode (PHP) [đóng]


93

Tôi là người mới sử dụng Java mặc dù đã có kinh nghiệm tốt về PHP và đang tìm kiếm sự thay thế hoàn hảo cho các hàm bùng nổ và mã hóa (có sẵn trong PHP) trong Java.

Tôi đã sử dụng Google cho điều tương tự nhưng không hài lòng với kết quả. Bất cứ ai có giải pháp tốt cho vấn đề của tôi sẽ được đánh giá cao.

Ví dụ:

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

Sản phẩm chất lượng:

[x, y, z]

3
OK, bạn đã tìm ra giải pháp nào cho đến nay?
Konstantin Yovkov

7
tại sao câu hỏi này bị bỏ phiếu? và lạc đề ?? Hãy đề xuất để tránh cho các câu hỏi tiếp theo.
Pankaj Wanjari,

19
Tôi nghĩ dựa trên lượt xem thì câu hỏi này không tệ chút nào. Tôi đồng ý rằng đó là một câu hỏi kỳ lạ nhưng rất nhiều lập trình viên PHP chúng tôi chỉ cần google cho java bùng nổ và sau đó nhận được câu trả lời chính xác.
gorgi93

6
Bây giờ là tháng 11 năm 2014, và tôi tìm thấy chuỗi java trên Google, và câu hỏi này vẫn xuất hiện dưới dạng kết quả hàng đầu. Tôi nghĩ rằng trạng thái 'đóng cửa là lạc đề' nên được dỡ bỏ, vì điều này không hề lạc đề đối với tôi.
Chen Li Yong

3
Tháng 2 năm 2016, câu hỏi này là kết quả chính cho "java bùng nổ".
không xác định

Câu trả lời:


139

Các Javadoc cho String cho thấy String.split()là những gì bạn đang tìm kiếm liên quan đến explode.

Java không bao gồm một "mã" tương đương "tham gia". Thay vì bao gồm phụ thuộc bên ngoài khổng lồ cho một chức năng đơn giản như các câu trả lời khác đề xuất, bạn có thể chỉ muốn viết một vài dòng mã. Có một số cách để thực hiện điều đó; sử dụng a StringBuilderlà một:

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

Cảm ơn các bạn vì tất cả câu trả lời của bạn.
Pankaj Wanjari

1
Split thực sự sử dụng một biểu thức chính quy (trong PHP, Perl, Java, v.v.). Nếu bạn muốn tách trên một biểu tượng khác, nó cần phải được thoát ra, như sau: String [] split = foo.split ("\\ (");
HoldOffHunger

2
Lưu ý rằng kể từ Java 8, chúng tôi thực sự có String#join( tài liệu ). Ví dụ của bạn: String joined = String.join(" ", split);. Phương thức sử dụng StringJoinerlớp.
Zabuzard

24

String.split() có thể cung cấp cho bạn một sự thay thế cho explode()

Để thay thế, implode()tôi khuyên bạn nên viết một hàm tùy chỉnh hoặc sử dụng các hàm của Apache CommonsStringUtils.join() .


16

Các lựa chọn thay thế tốt là các phương thức String.split và StringUtils.join.

Nổ tung :

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

Mã hóa:

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

Hãy nhớ rằng StringUtils nằm trong thư viện bên ngoài.


1
Bạn tìm thấy StringUtils ở đâu? Tôi thấy lớp này trong com.sun.internal và com.sun.deploy nhưng tôi không nghĩ rằng đó là một ý tưởng tốt để trực tiếp sử dụng các lớp dưới 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, sau khi chỉnh sửa của bạn, tôi thấy rằng lớp này xuất phát từ một lib bên ngoài
Arnaud Denoyelle

... đó là Appache Commons (tôi đoán): StringUtils
crushy


4

Tôi không quen thuộc với PHP, nhưng tôi nghĩ String.split là Java tương đương với PHP explode. Đối với implode, thư viện standart không cung cấp chức năng như vậy. Bạn chỉ cần lặp lại mảng của mình và xây dựng chuỗi bằng cách sử dụng StringBuilder / StringBuffer . Hoặc bạn có thể thử Google Guava Splitter and Joiner xuất sắc hoặcsplit/join các phương pháp từ Apache Commons StringUtils .


1
Tất cả các liên kết đều hợp lệ ngoại trừ Guava, vì đã 3 năm trôi qua và chúng đã chuyển sang GitHub. Tôi đã cập nhật nhận xét với các liên kết mới.
Ivan Sharamet

0

nếu bạn đang nói đến trong tham chiếu của Lớp chuỗi. vì vậy bạn có thể sử dụng

chuỗi con / tách

cho Explode & sử dụng String

nối

cho Implode.


1
concatekhông tương đương với implode.
Richard
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.