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];
2String 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_______82GeeksForGeek3
GeeksForGeek4
String TEST_STRING = "abcdef";
StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
9GeeksForGeek6
GeeksForGeek7
GeeksForGeek8
GeeksForGeek9
GeeksForGeek0
GeeksForGeek4
String TEST_STRING = "abcdef";
StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
9GeeksForGeek6
String TEST_STRING = "abcdef";
StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
9 StringUtils.chop[TEST_STRING];
0 StringUtils.chop[TEST_STRING];
1
GeeksForGeek7
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______82GeeksForGeek7
GeeksForGeek8
GeeksForGeek9
GeeksForGeek0
GeeksForGeek4
String TEST_STRING = "abcdef";
StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
9GeeksForGeek6
đầu ra
org.apache.commons
commons-lang3
3.12.0
6Phươ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
72StringUtils.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
78GeeksForGeek4
GeeksForGeek3
GeeksForGeek4
String TEST_STRING = "abcdef";
StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
9GeeksForGeek6
GeeksForGeek7
GeeksForGeek8
String TEST_STRING = "abcdef";
StringUtils.substring[TEST_STRING, 0, TEST_STRING.length[] - 1];
96