Chuyển đổi từ mảng sang chuỗi

1. Khái quát chung

Trong hướng dẫn ngắn này, chúng ta sẽ xem xét việc chuyển đổi một mảng chuỗi hoặc số nguyên thành một chuỗi và quay lại một lần nữa.

Chúng ta có thể đạt được điều này với các lớp tiện ích Java và Java vani từ các thư viện thường được sử dụng.

2. Chuyển Mảng thành Chuỗi

Đôi khi chúng ta cần chuyển một mảng chuỗi hoặc số nguyên thành một chuỗi, nhưng rất tiếc, không có phương thức trực tiếp nào để thực hiện chuyển đổi này.

Việc triển khai mặc định của phương thức toString () trên một mảng trả về một cái gì đó giống như Ljava.lang.String; @ 74a10858 chỉ thông báo cho chúng ta về kiểu và mã băm của đối tượng.

Tuy nhiên, lớp tiện ích java.util.Arrays hỗ trợ thao tác với mảng và chuỗi, bao gồm phương thức toString () cho mảng.

Arrays.toString () trả về một chuỗi có nội dung của mảng đầu vào. Chuỗi mới được tạo là một danh sách được phân tách bằng dấu phẩy các phần tử của mảng, được bao quanh bởi dấu ngoặc vuông (“[]”):

String[] strArray = { "one", "two", "three" }; String joinedString = Arrays.toString(strArray); assertEquals("[one, two, three]", joinedString);
int[] intArray = { 1,2,3,4,5 }; joinedString = Arrays.toString(intArray); assertEquals("[1, 2, 3, 4, 5]", joinedString);

Và, mặc dù thật tuyệt khi phương thức Arrays.toString (int []) nút tác vụ này cho chúng ta rất độc đáo, hãy so sánh nó với các phương thức khác nhau mà chúng ta có thể tự thực hiện.

2.1. StringBuilder.append ()

Để bắt đầu, hãy xem cách thực hiện chuyển đổi này với StringBuilder.append () :

String[] strArray = { "Convert", "Array", "With", "Java" }; StringBuilder stringBuilder = new StringBuilder(); for (int i = 0; i < strArray.length; i++) { stringBuilder.append(strArray[i]); } String joinedString = stringBuilder.toString(); assertEquals("ConvertArrayWithJava", joinedString);

Ngoài ra, để chuyển đổi một mảng các số nguyên, chúng ta có thể sử dụng cùng một cách tiếp cận nhưng thay vào đó gọi Integer.valueOf (intArray [i]) khi thêm vào StringBuilder của chúng ta .

2.2. API Java Streams

Java 8 trở lên cung cấp phương thức String.join () tạo ra một chuỗi mới bằng cách nối các phần tử và phân tách chúng bằng dấu phân cách được chỉ định, trong trường hợp của chúng tôi chỉ là chuỗi trống:

String joinedString = String.join("", new String[]{ "Convert", "With", "Java", "Streams" }); assertEquals("ConvertWithJavaStreams", joinedString);

Ngoài ra, chúng ta có thể sử dụng phương thức Collectors.joining () từ API Java Streams để nối các chuỗi từ Luồng theo thứ tự giống như mảng nguồn của nó:

String joinedString = Arrays .stream(new String[]{ "Convert", "With", "Java", "Streams" }) .collect(Collectors.joining()); assertEquals("ConvertWithJavaStreams", joinedString);

2.3. StringUtils.join ()

Và Apache Commons Lang sẽ không bao giờ bị bỏ rơi trong những nhiệm vụ như thế này.

Lớp StringUtils có một số phương thức StringUtils.join () có thể được sử dụng để thay đổi một mảng chuỗi thành một chuỗi duy nhất:

String joinedString = StringUtils.join(new String[]{ "Convert", "With", "Apache", "Commons" }); assertEquals("ConvertWithApacheCommons", joinedString);

2.4. Joiner.join ()

Và không chịu thua kém, Ổi cũng có sức chứa tương tự với lớp Joiner của nó . Lớp Joiner cung cấp một API thông thạo và cung cấp một số phương thức trợ giúp để kết hợp dữ liệu.

Ví dụ: chúng ta có thể thêm dấu phân cách hoặc bỏ qua giá trị null:

String joinedString = Joiner.on("") .skipNulls() .join(new String[]{ "Convert", "With", "Guava", null }); assertEquals("ConvertWithGuava", joinedString);

3. Chuyển đổi chuỗi thành Mảng chuỗi

Tương tự, đôi khi chúng ta cần chia một chuỗi thành một mảng có chứa một số tập hợp con của chuỗi đầu vào được phân tách bằng dấu phân cách được chỉ định, hãy xem cách chúng ta có thể thực hiện việc này.

3.1. String.split ()

Đầu tiên, hãy bắt đầu bằng cách tách khoảng trắng bằng phương thức String.split () mà không có dấu phân cách:

String[] strArray = "loremipsum".split("");

Sản xuất:

["l", "o", "r", "e", "m", "i", "p", "s", "u", "m"]

3.2. StringUtils.split ()

Thứ hai, hãy nhìn lại lớp StringUtils từ thư viện Commons Lang của Apache.

Trong số nhiều phương thức null-safe trên các đối tượng chuỗi, chúng ta có thể tìm thấy StringUtils.split (). Theo mặc định, nó giả định một dấu phân cách khoảng trắng:

String[] splitted = StringUtils.split("lorem ipsum dolor sit amet");

Kết quả là:

["lorem", "ipsum", "dolor", "sit", "amet"]

Tuy nhiên, chúng tôi cũng có thể cung cấp dấu phân cách nếu chúng tôi muốn.

3.3. Splitter.split ()

Cuối cùng, chúng ta cũng có thể sử dụng Guava với API thông thạo Splitter của nó :

List resultList = Splitter.on(' ') .trimResults() .omitEmptyStrings() .splitToList("lorem ipsum dolor sit amet"); String[] strArray = resultList.toArray(new String[0]);

Tạo ra:

["lorem", "ipsum", "dolor", "sit", "amet"]

4. Kết luận

Trong bài viết này, chúng tôi đã minh họa cách chuyển đổi một mảng thành chuỗi và sử dụng lại Java lõi và các thư viện tiện ích phổ biến.

Tất nhiên, bạn có thể tìm thấy việc triển khai tất cả các ví dụ và đoạn mã này trên GitHub.