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