Câu hỏi Explode và Implode (giống như PHP) trong Java [đóng]


Tôi mới trong Java mặc dù đã có một kinh nghiệm tốt trong PHP, và tìm kiếm sự thay thế hoàn hảo cho các hàm explode và implode (có sẵn trong PHP) trong Java.

Tôi có Googled cho cùng 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";
array a = javaExplode(',',s);  //what is javaExplode??
System.out.println(Arrays.toString(a));

Kết quả mong muốn:

[x, y, z]

76
2018-05-27 12:50


gốc


OK, bạn đã tìm thấy giải pháp nào cho đến nay? - Konstantin Yovkov
tại sao câu hỏi này lại bị bỏ phiếu? và tắt chủ đề ?? Vui lòng đề xuất để tránh các câu hỏi tiếp theo. - Pankaj Wanjari
Tôi nghĩ dựa trên số lượt xem câu hỏi này không phải là xấu cả. Tôi đồng ý nó là một câu hỏi kỳ lạ nhưng rất nhiều người trong số chúng tôi lập trình PHP chỉ google cho java phát nổ và sau đó nhận được điều này như là một câu trả lời đúng. - gorgi93
Bây giờ là tháng 11 năm 2014, và tôi googled chuỗi java phát nổ, và câu hỏi này vẫn xuất hiện như là kết quả hàng đầu. Tôi nghĩ rằng tình trạng 'đóng cửa như chủ đề' nên được dỡ bỏ, vì đây không phải là chủ đề cho tôi. - Chen Li Yong
Tháng 2 năm 2016, câu hỏi này là kết quả chính cho "java explode". - GustavoMP


Các câu trả lời:


Các Javadoc cho chuỗi tiết lộ rằng 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 "implode" của "join" tương đương. Thay vì bao gồm một sự phụ thuộc khổng lồ bên ngoài cho một chức năng đơn giản như các câu trả lời khác gợi ý, 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 một StringBuilder là 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();

119
2018-05-27 13:23



Cảm ơn bạn guys cho tất cả các câu trả lời của bạn. - Pankaj Wanjari
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, như sau: String [] split = foo.split ("\\ ("); - HoldOffHunger
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 StringJoiner lớp học. - Zabuza


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 Apache Commons'S StringUtils.join() chức năng.


19
2018-05-27 12:55





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

Nổ tung :

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

Implode:

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

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


12
2018-05-27 12:57



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


java.lang.String.split(String regex) là những gì bạn đang tìm kiếm.


4
2018-05-27 12:55





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


3
2018-05-27 13:02



Liên kết không hoạt động - marbel82
Tất cả các liên kết đều hợp lệ trừ Guava, kể từ 3 năm trôi qua và họ 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


nếu bạn đang nói về trong tham chiếu của String Class. để bạn có thể sử dụng

subString / split

cho Explode & sử dụng String

phối hợp

cho Implode.


0
2018-05-27 12:55



concate không tương đương với implode. - Richard