Есть ли простой способ удалить подстроку из заданного String
в Java?
Пример: "Hello World!"
удаление "o"
→"Hell Wrld!"
Ответы:
Вы можете легко использовать String.replace()
:
String helloWorld = "Hello World!";
String hellWrld = helloWorld.replace("o","");
replace('regex', 'replacement');
replaceAll('regex', 'replacement');
В вашем примере
String hi = "Hello World!"
String no_o = hi.replaceAll("o", "");
Проверьте Apache StringUtils :
static String replace(String text, String searchString, String replacement)
Заменяет все вхождения строки в другую строку.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)
Заменяет несколько символов в строке за один раз.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.
Вы можете также использовать гуавы в CharMatcher.removeFrom функцию.
Пример:
String s = CharMatcher.is('a').removeFrom("bazaar");
Вы также можете использовать Substring для замены существующей строки:
var str = "abc awwwa";
var Index = str.indexOf('awwwa');
str = str.substring(0, Index);
Вот реализация для удаления всех подстрок из данной строки
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 () находится здесь
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()
.