Làm cách nào để xóa chuỗi con khỏi Chuỗi đã cho?


190

Có cách nào dễ dàng để loại bỏ chuỗi con khỏi một chuỗi đã cho Stringtrong Java không?

Ví dụ : "Hello World!", loại bỏ "o""Hell Wrld!"

Câu trả lời:



9

Bạn có thể sử dụng StringBuffer

StringBuffer text = new StringBuffer("Hello World");
text.replace( StartIndex ,EndIndex ,String);

8

Kiểm tra StringUtils Apache :

  • static String replace(String text, String searchString, String replacement) Thay thế tất cả các lần xuất hiện của một Chuỗi trong một Chuỗi khác.
  • static String replace(String text, String searchString, String replacement, int max) Thay thế một Chuỗi bằng một Chuỗi khác bên trong Chuỗi lớn hơn, cho các giá trị tối đa đầu tiên của Chuỗi tìm kiếm.
  • static String replaceChars(String str, char searchChar, char replaceChar) Thay thế tất cả các lần xuất hiện của một ký tự trong Chuỗi bằng một ký tự khác.
  • static String replaceChars(String str, String searchChars, String replaceChars) Thay thế nhiều ký tự trong một chuỗi trong một lần.
  • static String replaceEach(String text, String[] searchList, String[] replacementList) Thay thế tất cả các lần xuất hiện của Chuỗi trong Chuỗi khác.
  • static String replaceEachRepeatedly(String text, String[] searchList, String[] replacementList) Thay thế tất cả các lần xuất hiện của Chuỗi trong Chuỗi khác.
  • static String replaceOnce(String text, String searchString, String replacement) Thay thế một Chuỗi bằng một Chuỗi khác bên trong Chuỗi lớn hơn, một lần.
  • static String replacePattern(String source, String regex, String replacement) Thay thế từng chuỗi con của Chuỗi nguồn khớp với biểu thức chính quy đã cho bằng sự thay thế đã cho bằng cách sử dụng tùy chọn Pattern.DOTALL.

1
Chỉ cần điểm chuẩn thay thế và nó chậm hơn 6 lần so với chạy mã Java tùy chỉnh.
Alex Arvanitidis

6
replace('regex', 'replacement');
replaceAll('regex', 'replacement');

Trong ví dụ của bạn,

String hi = "Hello World!"
String no_o = hi.replaceAll("o", "");

4

Điều này làm việc tốt cho tôi.

String hi = "Hello World!"
String no_o = hi.replaceAll("o", "");

hoặc bạn có thể sử dụng

String no_o = hi.replace("o", "");

3

Bạn phải xem cái StringBuilder/StringBuffernào cho phép bạn xóa, chèn, thay thế char (s) ở phần được chỉ định .



1
replaceAll(String regex, String replacement)

Phương pháp trên sẽ giúp có được câu trả lời.

String check = "Hello World";
check = check.replaceAll("o","");

1

Bạn cũng có thể sử dụng Chuỗi con để thay thế bằng chuỗi hiện có:

var str = "abc awwwa";
var Index = str.indexOf('awwwa');
str = str.substring(0, Index);

0

Đây là cách thực hiện để xóa tất cả các chuỗi con khỏi chuỗi đã cho

public static String deleteAll(String str, String pattern)
{
    for(int index = isSubstring(str, pattern); index != -1; index = isSubstring(str, pattern))
        str = deleteSubstring(str, pattern, index);

    return str;
}

public static String deleteSubstring(String str, String pattern, int index)
{
    int start_index = index;
    int end_index = start_index + pattern.length() - 1;
    int dest_index = 0;
    char[] result = new char[str.length()];


    for(int i = 0; i< str.length() - 1; i++)
        if(i < start_index || i > end_index)
            result[dest_index++] = str.charAt(i);

    return new String(result, 0, dest_index + 1);
}

Việc thực hiện phương thức isSubopes () ở đây


0
private static void replaceChar() {
    String str = "hello world";
    final String[] res = Arrays.stream(str.split(""))
            .filter(s -> !s.equalsIgnoreCase("o"))
            .toArray(String[]::new);
    System.out.println(String.join("", res));
}

Trong trường hợp bạn có một số logic phức tạp để lọc char, chỉ cần một cách khác thay vì replace().


0

Nếu bạn biết chỉ số bắt đầu và kết thúc, bạn có thể sử dụng chỉ số này

string = string.substring(0, start_index) + string.substring(end_index, string.length());
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.