Відповіді:
Ви можете легко використовувати String.replace()
:
String helloWorld = "Hello World!";
String hellWrld = helloWorld.replace("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)
Замінює всі події персонажа в рядку іншим.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.
replace('regex', 'replacement');
replaceAll('regex', 'replacement');
У вашому прикладі
String hi = "Hello World!"
String no_o = hi.replaceAll("o", "");
Ви також можете використовувати функцію CharMatcher.removeFrom від guava .
Приклад:
String s = CharMatcher.is('a').removeFrom("bazaar");
Ви можете використовувати підрядку також для заміни існуючої рядки:
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()
.