Chuỗi nhiều dòng trong Java

1. Khái quát chung

Do thực tế là chưa có lớp chuỗi nhiều dòng riêng trong Java, nên việc tạo và sử dụng các chuỗi nhiều dòng sẽ hơi phức tạp.

Trong hướng dẫn này, chúng tôi sẽ giới thiệu cho các bạn một số phương pháp để tạo và sử dụng chuỗi nhiều dòng trong Java .

2. Lấy Dấu phân cách Dòng

Mỗi hệ điều hành có thể có một cách riêng để xác định và nhận dạng các dòng mới. Trong Java, rất dễ lấy dấu phân tách dòng hệ điều hành:

String newLine = System.getProperty("line.separator");

Chúng ta sẽ sử dụng newLine này trong các phần sau để tạo chuỗi nhiều dòng.

3. Kết nối chuỗi

Nối chuỗi là một phương pháp gốc dễ dàng có thể được sử dụng để tạo chuỗi nhiều dòng:

public String stringConcatenation() { return "Get busy living" .concat(newLine) .concat("or") .concat(newLine) .concat("get busy dying.") .concat(newLine) .concat("--Stephen King"); }

Sử dụng toán tử + là một cách khác để đạt được điều tương tự. Các trình biên dịch Java dịch concat () và toán tử + theo cùng một cách:

public String stringConcatenation() { return "Get busy living" + newLine + "or" + newLine + "get busy dying." + newLine + "--Stephen King"; }

4. Tham gia chuỗi

Java 8 đã giới thiệu phép nối chuỗi # , lấy dấu phân cách cùng với một số chuỗi làm đối số. Nó trả về một chuỗi cuối cùng có tất cả các chuỗi đầu vào được kết hợp với nhau bằng dấu phân cách:

public String stringJoin() { return String.join(newLine, "Get busy living", "or", "get busy dying.", "--Stephen King"); }

5. Trình tạo chuỗi

StringBuilder là một lớp trợ giúp để xây dựng String s. StringBuilder đã được giới thiệu trong Java 1.5 để thay thế cho StringBuffer . Đó là một lựa chọn tốt để xây dựng các chuỗi lớn trong một vòng lặp:

public String stringBuilder() { return new StringBuilder() .append("Get busy living") .append(newLine) .append("or") .append(newLine) .append("get busy dying.") .append(newLine) .append("--Stephen King") .toString(); }

6. String Writer

StringWriter là một phương thức khác mà chúng ta có thể sử dụng để tạo một chuỗi nhiều dòng. Chúng tôi không cần newLine ở đây, vì chúng tôi sử dụng PrintWriter . Hàm println tự động thêm các dòng mới:

public String stringWriter() { StringWriter stringWriter = new StringWriter(); PrintWriter printWriter = new PrintWriter(stringWriter); printWriter.println("Get busy living"); printWriter.println("or"); printWriter.println("get busy dying."); printWriter.println("--Stephen King"); return stringWriter.toString(); }

7. Guava Joiner

Sử dụng thư viện bên ngoài chỉ cho một nhiệm vụ đơn giản như thế này không có nhiều ý nghĩa, tuy nhiên, nếu dự án đã sử dụng thư viện cho các mục đích khác, chúng ta có thể sử dụng nó. Ví dụ, thư viện Guava của Google rất phổ biến. Guava có một lớp Joiner có thể tạo chuỗi nhiều dòng:

public String guavaJoiner() { return Joiner.on(newLine).join(ImmutableList.of("Get busy living", "or", "get busy dying.", "--Stephen King")); }

8. Tải từ tệp

Java đọc các tệp chính xác như chúng vốn có. Điều này có nghĩa là nếu chúng ta có một chuỗi nhiều dòng trong một tệp văn bản, chúng ta sẽ có cùng một chuỗi khi chúng ta đọc tệp. Có rất nhiều cách để đọc từ một tệp trong Java.

Trên thực tế, bạn nên tách các chuỗi dài khỏi mã:

public String loadFromFile() throws IOException { return new String(Files.readAllBytes(Paths.get("src/main/resources/stephenking.txt"))); }

9. Sử dụng các tính năng của IDE

Nhiều IDE hiện đại hỗ trợ sao chép / dán nhiều dòng. Eclipse và IntelliJ IDEA là những ví dụ về các IDE như vậy. Chúng ta có thể chỉ cần sao chép chuỗi nhiều dòng của mình và dán vào bên trong hai dấu ngoặc kép trong các IDE này.

Rõ ràng, phương pháp này không hoạt động để tạo chuỗi trong thời gian chạy, nhưng đó là một cách nhanh chóng và dễ dàng để có được một chuỗi nhiều dòng.

10. Kết luận

Trong hướng dẫn này, chúng ta đã tìm hiểu một số phương pháp để xây dựng chuỗi nhiều dòng trong Java.

Tin tốt là Java 13 sẽ có hỗ trợ gốc cho các chuỗi nhiều dòng thông qua Khối văn bản. Không cần phải nói, tất cả các phương pháp trên sẽ vẫn hoạt động trong Java 13.

Mã cho tất cả các phương pháp trong bài viết này có sẵn trên Github.