Thay thế cho String.join trong Android?


81

Tôi muốn nối ArrayList với dấu phẩy làm dấu phân cách. Tôi đã tìm thấy câu trả lời này , nói rằng nó có thể sử dụng String.jointrong Java.

Tuy nhiên, khi tôi cố gắng sử dụng điều này, Android Studio gặp lỗi sau:

Không thể giải quyết phương thức 'tham gia (java.lang.String, java.lang.String, java.lang.String, java.lang.String)'

Có giải pháp thay thế tốt, ngắn gọn nào cho Android Studio (thay vì sử dụng vòng lặp for) không?


TextUtils.join () có thể không?
mjp66,

thử StringUtils.join
Bhargav Thanki

Câu trả lời:


185

Bạn có thể sử dụng TextUtils.jointhay thế:

String result = TextUtils.join(", ", list);

( String.joinđã được thêm vào Java 8, đó là lý do tại sao bạn không thể sử dụng nó trong Android.)


3
Để tiết kiệm một vài cú nhấp chuột để người dùng không Android Studio:import android.text.TextUtils
Peter Jankuliak

Sử dụng TextUtils có thể gây ra vấn đề với kiểm tra đơn vị. Trong trường hợp đó, hãy sử dụng một hàm từ đây: android.googlesource.com/platform/frameworks/base/+/refs/heads/…
Subin

1
@Subin: Vấn đề gì vậy? Và tại sao lại liên kết tới TextUtils để thay thế cho TextUtils? Tôi e rằng nhận xét của bạn không thực sự rõ ràng.
Jon Skeet

@JonSkeet Nguyên nhân gây ra sự cố này: stackoverflow.com/q/35763289/1372424 Giải pháp từ đây: medium.com/@okmanideep/…
Subin

2
@Subin: Đúng vậy, rất cụ thể nếu bạn đang sử dụng Mockito. Và lưu ý rằng giải pháp là vấn đề sao chép nguồn TextUtils vào dự án thử nghiệm của bạn.
Jon Skeet

7
String[] List ={"<html>","<body>","<title>"};
String abc;       
abc =TextUtils.join("\n", List);
textmsg.getText().insert(textmsg.getSelectionStart(), abc);

kết quả:

<html>
<body>
<title>

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.