Cập nhật API chuỗi trong Java 12

1. Giới thiệu

Java 12 đã thêm một số API hữu ích vào lớp String . Trong hướng dẫn này, chúng ta sẽ khám phá các API mới này với các ví dụ.

2. thụt lề ()

Phương thức indent () điều chỉnh thụt lề của mỗi dòng trong chuỗi dựa trên đối số được truyền cho nó.

Khi indent () được gọi trên một chuỗi, các hành động sau được thực hiện:

  1. Về mặt khái niệm, chuỗi được phân tách thành các dòng bằng dòng () . lines () là API chuỗi được giới thiệu trong Java 11.
  2. Sau đó, mỗi dòng được điều chỉnh dựa trên đối số int n được chuyển đến nó và sau đó được gắn với một nguồn cấp dữ liệu dòng “\ n”.
    1. Nếu n > 0, thì n khoảng trắng được chèn vào đầu mỗi dòng.
    2. Nếu n <0, thì tối đa n ký tự khoảng trắng bị xóa từ đầu mỗi dòng. Trong trường hợp một dòng nhất định không chứa đủ khoảng trắng, thì tất cả các ký tự khoảng trắng đầu dòng sẽ bị xóa.
    3. Nếu n == 0, thì dòng không đổi. Tuy nhiên, các đầu cuối dòng vẫn được bình thường hóa.
  3. Các dòng kết quả sau đó được nối và trả về.

Ví dụ:

@Test public void whenPositiveArgument_thenReturnIndentedString() { String multilineStr = "This is\na multiline\nstring."; String outputStr = " This is\n a multiline\n string.\n"; String postIndent = multilineStr.indent(3); assertThat(postIndent, equalTo(outputStr)); }

Chúng ta cũng có thể truyền một số nguyên âm để giảm độ thụt vào của chuỗi. Ví dụ:

@Test public void whenNegativeArgument_thenReturnReducedIndentedString() { String multilineStr = " This is\n a multiline\n string."; String outputStr = " This is\n a multiline\n string.\n"; String postIndent = multilineStr.indent(-2); assertThat(postIndent, equalTo(outputStr)); }

3. biến đổi ()

Chúng ta có thể áp dụng một hàm cho chuỗi này bằng phương thức biến đổi () . Hàm sẽ mong đợi một đối số Chuỗi duy nhất và tạo ra kết quả:

@Test public void whenTransformUsingLamda_thenReturnTransformedString() { String result = "hello".transform(input -> input + " world!"); assertThat(result, equalTo("hello world!")); }

Không nhất thiết đầu ra phải là một chuỗi. Ví dụ:

@Test public void whenTransformUsingParseInt_thenReturnInt() { int result = "42".transform(Integer::parseInt); assertThat(result, equalTo(42)); }

4. Kết luận

Trong bài viết này, chúng tôi đã khám phá các API chuỗi mới trong Java 12. Như thường lệ, các đoạn mã có thể được tìm thấy trên GitHub.