Gibt es eine einfache Möglichkeit, Teilstrings aus einem bestimmten String in Java zu entfernen?
beispiel: "Hallo Welt!" , "o" entfernen -> "Hell Wrld!"
Sie können einfach String.replace()
verwenden:
String helloWorld = "Hello World!";
String hellWrld = helloWorld.replace("o","");
Sie können StringBuffer verwenden
StringBuffer text = new StringBuffer("Hello World");
text.replace( StartIndex ,EndIndex ,String);
replace('regex', 'replacement');
replaceAll('regex', 'replacement');
In Ihrem Beispiel
String hi = "Hello World!"
String no_o = hi.replaceAll("o", "");
Check out Apache StringUtils :
static String replace(String text, String searchString, String replacement)
Ersetzt alle Vorkommen eines Strings in einem anderen String.static String replace(String text, String searchString, String replacement, int max)
Ersetzt einen String durch einen anderen String in einem Größerer String für die ersten Maximalwerte des Suchstrings.static String replaceChars(String str, char searchChar, char replaceChar)
Ersetzt alle Vorkommen eines Zeichens in einer Zeichenfolge durch Ein weiterer.static String replaceChars(String str, String searchChars, String replaceChars)
Ersetzt mehrere Zeichen in einem String auf einmal.static String replaceEach(String text, String[] searchList, String[] replacementList)
Ersetzt alle Vorkommen von Strings innerhalb von ein anderer String.static String replaceEachRepeatedly(String text, String[] searchList, String[] replacementList)
Ersetzt alle Vorkommen von Zeichenfolgen innerhalb einer anderen Zeichenfolge.static String replaceOnce(String text, String searchString, String replacement)
Ersetzt einen String durch einen anderen String in einem Größere Zeichenfolge einmal.static String replacePattern(String source, String regex, String replacement)
Ersetzt jeden Teilstring des Quellstrings, der stimmt mit dem angegebenen regulären Ausdruck mit der angegebenen Ersetzung überein. die Option Pattern.DOTALL.
Das funktioniert gut für mich.
String hi = "Hello World!"
String no_o = hi.replaceAll("o", "");
oder du kannst verwenden
String no_o = hi.replace("o", "");
Sie sollten sich StringBuilder/StringBuffer
ansehen, mit dem Sie Zeichen (s) bei angegebenem offset löschen, einfügen, ersetzen können.
Sie können auch die Funktion GuavasCharMatcher.removeFrom verwenden.
Beispiel:
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));
}
für den Fall, dass Sie eine komplizierte Logik zum Filtern des Zeichens haben, kann dies auf eine andere Weise erfolgen, anstatt zu ersetzen.
Wenn Sie den Start- und Endindex kennen, können Sie diesen verwenden
string = string.substring(0, start_index) + string.substring(end_index, string.length());
Hier ist die Implementierung, um alle Teilzeichenfolgen aus der angegebenen Zeichenfolge zu löschen
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);
}
Die Implementierung der Methode isSubstring () ist hier
Sie können Substring auch zum Ersetzen durch eine vorhandene Zeichenfolge verwenden:
var str = "abc awwwa";
var Index = str.indexOf('awwwa');
str = str.substring(0, Index);
replaceAll(String regex, String replacement)
Die oben genannte Methode hilft, die Antwort zu erhalten.
String check = "Hello World";
check = check.replaceAll("o","");