Есть ли простой способ удалить подстроку из заданного String
в Java?
Пример: "Hello World!"
удаление "o"
→"Hell Wrld!"
Вы можете легко использовать String.replace()
:
String helloWorld = "Hello World!";
String hellWrld = helloWorld.replace("o","");
Вы можете использовать StringBuffer
StringBuffer text = new StringBuffer("Hello World");
text.replace( StartIndex ,EndIndex ,String);
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.
Мне это нравится.
String hi = "Hello World!" String no_o = hi.replaceAll("o", "");
или вы можете использовать
String no_o = hi.replace("o", "");
источник
Вы должны посмотреть,
StringBuilder/StringBuffer
какие из них позволяют удалять, вставлять, заменять символы с указанным смещением .источник
Вы можете также использовать гуавы в CharMatcher.removeFrom функцию.
Пример:
String s = CharMatcher.is('a').removeFrom("bazaar");
источник
Вышеуказанный метод поможет получить ответ.
String check = "Hello World"; check = check.replaceAll("o","");
источник
Вы также можете использовать Substring для замены существующей строки:
var str = "abc awwwa"; var Index = str.indexOf('awwwa'); str = str.substring(0, Index);
источник
Если вы знаете начальный и конечный индекс, вы можете использовать этот
string = string.substring(0, start_index) + string.substring(end_index, string.length());
источник
Вот реализация для удаления всех подстрок из данной строки
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()
.источник