Đây là những gì tôi đã đưa ra. Có một số cách để làm điều này và chúng phụ thuộc vào các công cụ bạn sử dụng.
Sử dụng StringUtils
và ArrayUtils
từ Common Lang:
int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = StringUtils.join(ArrayUtils.toObject(arr), " - ");
Bạn không thể chỉ sử dụng StringUtils.join(arr, " - ");
vì StringUtils
không có phiên bản quá tải của phương pháp. Mặc dù, nó có phương pháp StringUtils.join(int[], char)
.
Làm việc ở bất kỳ phiên bản Java nào, từ 1.2.
Sử dụng Java 8 suối:
Something như thế này:
int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = Arrays.stream(arr)
.mapToObj(String::valueOf)
.collect(Collectors.joining(" - "));
Trong thực tế, có rất nhiều biến thể để đạt được kết quả sử dụng suối.
Phương thức Java 8 String.join()
chỉ hoạt động với các chuỗi, do đó, để sử dụng nó, bạn vẫn phải chuyển đổi int[]
thành String[]
.
String[] sarr = Arrays.stream(arr).mapToObj(String::valueOf).toArray(String[]::new);
String result = String.join(" - ", sarr);
Nếu bạn bị mắc kẹt sử dụng Java 7 hoặc sớm hơn không có thư viện, bạn có thể viết phương pháp của riêng bạn tiện ích:
public static String myJoin(int[] arr, String separator) {
if (null == arr || 0 == arr.length) return "";
StringBuilder sb = new StringBuilder(256);
sb.append(arr[0]);
//if (arr.length == 1) return sb.toString();
for (int i = 1; i < arr.length; i++) sb.append(separator).append(arr[i]);
return sb.toString();
}
hơn bạn có thể làm:
int[] arr = new int[] {1, 2, 3, 4, 5, 6, 7};
String result = myJoin(arr, " - ");
Bạn có thể '.collect (Collectors.joining (", "))' thay vì mảng chuỗi tạm thời. – shmosel
Tổng quan đẹp! Đối với phiên bản java 1.7: Về mặt kỹ thuật, bạn sẽ không cần arr.length == 1 kiểm tra trước vòng lặp nhưng điều này cũng hoạt động hoàn hảo. – n247s
@shmosel, nope. 'Arrays.stream (arr)' tạo ra một 'IntStream' và trong đó không có phương thức' collect() 'như vậy. – spirit