Как я могу удалить подстроку из данной строки? - PullRequest
149 голосов
/ 15 октября 2011

Есть ли простой способ удалить подстроку из заданного String в Java?

Пример: "Hello World!", удаление "o""Hell Wrld!"

Ответы [ 11 ]

309 голосов
/ 15 октября 2011

Вы можете легко использовать String.replace():

String helloWorld = "Hello World!";
String hellWrld = helloWorld.replace("o","");
8 голосов
/ 30 января 2014

Вы можете использовать StringBuffer

StringBuffer text = new StringBuffer("Hello World");
text.replace( StartIndex ,EndIndex ,String);
6 голосов
/ 15 октября 2011
replace('regex', 'replacement');
replaceAll('regex', 'replacement');

В вашем примере,

String hi = "Hello World!"
String no_o = hi.replaceAll("o", "");
5 голосов
/ 15 октября 2011

Извлечь Apache StringUtils :

  • static String replace(String text, String searchString, String replacement) Заменяет все вхождения строки в другой строке.
  • static String replace(String text, String searchString, String replacement, int max) Заменяет aСтрока с другой строкой внутри большей строки, для первых максимальных значений строки поиска.
  • static String replaceChars(String str, char searchChar, char replaceChar) Заменяет все вхождения символа в строке на другую.
  • static String replaceChars(String str, String searchChars, String replaceChars) Заменяетнесколько символов в строке за один раз.
  • static String replaceEach(String text, String[] searchList, String[] replacementList) Заменяет все вхождения строк в другой строке.
  • static String replaceEachRepeatedly(String text, String[] searchList, String[] replacementList) Заменяет все вхождения строк в другой строке.
  • static String replaceOnce(String text, String searchString, String replacement) Заменяет строку другой строкой внутри большей строки, один раз.
  • static String replacePattern(String source, String regex, String replacement) Заменяет каждую подстроку исходной строки, которая соответствует заданному регулярному выражению с заданной заменой, с использованием параметра Pattern.DOTALL.
3 голосов
/ 13 сентября 2015

Это хорошо работает для меня.

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

или вы можете использовать

String no_o = hi.replace("o", "");
3 голосов
/ 15 октября 2011

Вы должны посмотреть на StringBuilder/StringBuffer, который позволяет вам удалять, вставлять, заменять символы на указанном смещении .

2 голосов
/ 15 октября 2011

Вы также можете использовать функцию гуавы CharMatcher.removeFrom .

Пример:

 String s = CharMatcher.is('a').removeFrom("bazaar");
0 голосов
/ 22 мая 2019

Вы можете использовать Substring также для замены существующей строкой:

var str = "abc awwwa";
var Index = str.indexOf('awwwa');
str = str.substring(0, Index);
0 голосов
/ 02 ноября 2018
replaceAll(String regex, String replacement)

Вышеуказанный метод поможет получить ответ.

String check = "Hello World";
check = check.replaceAll("o","");
0 голосов
/ 02 ноября 2018

Вот реализация для удаления всех подстрок из заданной строки

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 () здесь

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...