ฉันจะลบสตริงย่อยออกจากสตริงที่กำหนดได้อย่างไร


190

มีวิธีง่าย ๆ ในการลบซับสตริงออกจากที่ระบุStringใน Java

ตัวอย่าง: "Hello World!", ลบ"o""Hell Wrld!"

คำตอบ:



9

คุณสามารถใช้ StringBuffer

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

8

ตรวจสอบApache StringUtils :

  • static String replace(String text, String searchString, String replacement) แทนที่ String ทั้งหมดภายในสตริงอื่น
  • static String replace(String text, String searchString, String replacement, int max) แทนที่สตริงด้วยสตริงอื่นภายในสตริงที่ใหญ่กว่าสำหรับค่าสูงสุดแรกของสตริงการค้นหา
  • static String replaceChars(String str, char searchChar, char replaceChar) แทนที่อักขระทั้งหมดใน String ด้วยเหตุการณ์อื่น
  • static String replaceChars(String str, String searchChars, String replaceChars) แทนที่อักขระหลายตัวใน String ในครั้งเดียว
  • static String replaceEach(String text, String[] searchList, String[] replacementList) แทนที่ Strings ทั้งหมดภายในสตริงอื่น
  • static String replaceEachRepeatedly(String text, String[] searchList, String[] replacementList) แทนที่ Strings ทั้งหมดภายในสตริงอื่น
  • static String replaceOnce(String text, String searchString, String replacement) แทนที่สตริงด้วยสตริงอื่นภายในสตริงที่ใหญ่กว่าหนึ่งครั้ง
  • static String replacePattern(String source, String regex, String replacement) แทนที่แต่ละสตริงย่อยของสตริงต้นทางที่ตรงกับนิพจน์ทั่วไปที่กำหนดด้วยการแทนที่ที่กำหนดโดยใช้ตัวเลือก Pattern.DOTALL

1
เพียงแค่ทำการเปรียบเทียบ replacePattern และ 6x ช้ากว่าการรันโค้ด Java ที่กำหนดเอง
Alex Arvanitidis

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

ในตัวอย่างของคุณ

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

4

มันใช้งานได้ดีสำหรับฉัน

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

หรือคุณสามารถใช้

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



1
replaceAll(String regex, String replacement)

วิธีการข้างต้นจะช่วยให้ได้คำตอบ

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

1

คุณสามารถใช้ซับสตริงเพื่อแทนที่ด้วยสตริงที่มีอยู่:

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

0

นี่คือการดำเนินการเพื่อลบสตริงย่อยทั้งหมดจากสตริงที่กำหนด

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);
}

การใช้งานของ isSubstring () วิธีการอยู่ที่นี่


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));
}

replace()ในกรณีที่คุณมีบางตรรกะที่ซับซ้อนเพื่อกรองถ่านเพียงวิธีอื่นแทน


0

หากคุณรู้จักดัชนีเริ่มต้นและสิ้นสุดคุณสามารถใช้สิ่งนี้

string = string.substring(0, start_index) + string.substring(end_index, string.length());
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.