Python xóa dòng đầu tiên và dòng cuối cùng khỏi chuỗi

Trong hướng dẫn nhanh này, chúng ta sẽ khám phá các kỹ thuật khác nhau để xóa ký tự cuối cùng của Chuỗi

2. Sử dụng chuỗi. chuỗi con[]

Cách đơn giản nhất là sử dụng phương thức substring[] có sẵn của lớp String

Để xóa ký tự cuối cùng của một Chuỗi đã cho, chúng ta phải sử dụng hai tham số. 0 làm chỉ mục bắt đầu và chỉ mục của ký tự áp chót. Chúng ta có thể đạt được điều đó bằng cách gọi phương thức length[] của String và trừ 1 từ kết quả

Tuy nhiên, phương pháp này không an toàn về giá trị rỗng và nếu chúng ta sử dụng một chuỗi rỗng, điều này sẽ thất bại

Để khắc phục các sự cố với các chuỗi rỗng và rỗng, chúng ta có thể bọc phương thức trong một lớp trợ giúp

public static String removeLastChar[String s] {
    return [s == null || s.length[] == 0]
      ? null 
      : [s.substring[0, s.length[] - 1]];
}

Chúng tôi có thể cấu trúc lại mã và sử dụng Java 8

public static String removeLastCharOptional[String s] {
    return Optional.ofNullable[s]
      .filter[str -> str.length[] != 0]
      .map[str -> str.substring[0, str.length[] - 1]]
      .orElse[s];
    }

3. Sử dụng StringUtils. chuỗi con[]

Thay vì phát minh lại bánh xe, chúng ta có thể sử dụng lớp StringUtils từ thư viện Apache Commons Lang3, cung cấp các thao tác String hữu ích. Một trong số đó là phương thức chuỗi con [] an toàn null, xử lý các ngoại lệ

Để bao gồm StringUtils, chúng tôi phải cập nhật pom của mình. tập tin xml


    org.apache.commons
    commons-lang3
    3.12.0

ChuỗiUtils. substring[] yêu cầu ba tham số. một Chuỗi đã cho, chỉ mục của ký tự đầu tiên [trong trường hợp của chúng tôi, nó sẽ luôn là 0] và chỉ mục của ký tự áp chót. Một lần nữa, chúng ta chỉ cần sử dụng phương thức length[] và trừ 1

String TEST_STRING = "abcdef";

StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];

Tuy nhiên, một lần nữa, thao tác này không an toàn. Mặc dù vậy, nó sẽ hoạt động tốt với các Chuỗi trống

4. Sử dụng StringUtils. chặt[]

Lớp StringUtils cung cấp phương thức chop[], hoạt động tốt với tất cả các tình huống cạnh. chuỗi rỗng và null

Nó rất dễ sử dụng và chỉ yêu cầu một tham số. chuỗi. Mục đích duy nhất của nó là xóa ký tự cuối cùng, không hơn, không kém

StringUtils.chop[TEST_STRING];

5. Sử dụng biểu thức chính quy

Chúng ta cũng có thể xóa ký tự cuối cùng [hoặc bất kỳ số lượng ký tự nào] khỏi Chuỗi bằng cách sử dụng tốt các biểu thức chính quy

Ví dụ, chúng ta có thể sử dụng phương thức replaceAll[] của chính lớp String, phương thức này nhận hai tham số. biểu thức chính quy và Chuỗi thay thế

TEST_STRING.replaceAll[".$", ""];

Xin lưu ý rằng vì chúng ta đang gọi một phương thức trên Chuỗi, nên thao tác này không an toàn về giá trị rỗng

Ngoài ra, các biểu thức replaceAll[] và regex có thể phức tạp ngay từ cái nhìn đầu tiên. Chúng ta có thể đọc thêm về regex tại đây, nhưng để logic thân thiện với người dùng hơn một chút, chúng ta có thể bọc nó trong một lớp trợ giúp

public static String removeLastCharRegex[String s] {
    return [s == null] ? null : s.replaceAll[".$", ""];
}

Lưu ý rằng nếu một Chuỗi kết thúc bằng một dòng mới, thì phương thức trên sẽ thất bại vì “. ” trong biểu thức chính quy khớp với bất kỳ ký tự nào ngoại trừ các dấu kết thúc dòng

Cuối cùng, hãy viết lại cách triển khai với Java 8

public static String removeLastCharRegexOptional[String s] {
    return Optional.ofNullable[s]
      .map[str -> str.replaceAll[".$", ""]]
      .orElse[s];
}

6. Phần kết luận

Trong bài viết ngắn này, chúng tôi đã thảo luận về các cách khác nhau để chỉ xóa ký tự cuối cùng của Chuỗi, một số cách thủ công và một số cách sẵn sàng.

Nếu chúng tôi cần linh hoạt hơn và cần xóa nhiều ký tự hơn, chúng tôi có thể sử dụng giải pháp nâng cao hơn với các biểu thức chính quy

Cho một chuỗi, nhiệm vụ là viết chương trình Python để xóa ký tự cuối cùng khỏi chuỗi đã cho

Ví dụ

Đầu vào. “GeekForGeek”

đầu ra. “GeekForGeek”

Đầu vào. “1234”

đầu ra. “123”

Giải trình. Ở đây chúng tôi đang xóa ký tự cuối cùng của chuỗi gốc

Ghi chú. Các chuỗi là bất biến trong Python, vì vậy bất kỳ sửa đổi nào trong chuỗi sẽ dẫn đến việc tạo một chuỗi mới

Phương pháp 1. Sử dụng list Slicing để xóa phần tử cuối cùng khỏi chuỗi

Kỹ thuật cắt cũng có thể loại bỏ phần tử cuối cùng khỏi chuỗi. str[. -1] sẽ xóa phần tử cuối cùng trừ tất cả các phần tử. Ở đây chúng tôi đang sử dụng khái niệm cắt và sau đó cập nhật chuỗi gốc bằng chuỗi được cập nhật

Python3




String TEST_STRING = "abcdef";

StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
9
StringUtils.chop[TEST_STRING];
0
StringUtils.chop[TEST_STRING];
1

 

StringUtils.chop[TEST_STRING];
2

String TEST_STRING = "abcdef";

StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
9
StringUtils.chop[TEST_STRING];
0
String TEST_STRING = "abcdef";

StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
9_______82
GeeksForGeek
3
GeeksForGeek
4
String TEST_STRING = "abcdef";

StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
9
GeeksForGeek
6
GeeksForGeek
7
GeeksForGeek
8
GeeksForGeek
9

GeeksForGeek
0
GeeksForGeek
4
String TEST_STRING = "abcdef";

StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
9
GeeksForGeek
6

String TEST_STRING = "abcdef";

StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
9
StringUtils.chop[TEST_STRING];
0
StringUtils.chop[TEST_STRING];
1

 

GeeksForGeek
7

String TEST_STRING = "abcdef";

StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
9
StringUtils.chop[TEST_STRING];
0
String TEST_STRING = "abcdef";

StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
9______82
GeeksForGeek
7
GeeksForGeek
8
GeeksForGeek
9

GeeksForGeek
0
GeeksForGeek
4
String TEST_STRING = "abcdef";

StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
9
GeeksForGeek
6

đầu ra


    org.apache.commons
    commons-lang3
    3.12.0
6

Phương pháp 2. Sử dụng các vòng lặp và khoảng trống thừa để Xóa phần tử cuối cùng khỏi chuỗi

Ở đây chúng tôi đang sử dụng thêm một số không gian tôi. e. O[N] và lưu trữ tất cả các ký tự ngoại trừ ký tự cuối cùng

Python3




String TEST_STRING = "abcdef";

StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
9
StringUtils.chop[TEST_STRING];
0
StringUtils.chop[TEST_STRING];
1


    org.apache.commons
    commons-lang3
    3.12.0
72
StringUtils.chop[TEST_STRING];
0

    org.apache.commons
    commons-lang3
    3.12.0
74

 


    org.apache.commons
    commons-lang3
    3.12.0
75

    org.apache.commons
    commons-lang3
    3.12.0
76

    org.apache.commons
    commons-lang3
    3.12.0
77

    org.apache.commons
    commons-lang3
    3.12.0
78
GeeksForGeek
4
GeeksForGeek
3
GeeksForGeek
4
String TEST_STRING = "abcdef";

StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
9
GeeksForGeek
6
GeeksForGeek
7
GeeksForGeek
8
String TEST_STRING = "abcdef";

StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
96

Chủ Đề