How can I remove a substring from a given String?

JavaString

Java Problem Overview


Is there an easy way to remove substring from a given String in Java?

Example: "Hello World!", removing "o""Hell Wrld!"

Java Solutions


Solution 1 - Java

You could easily use String.replace():

String helloWorld = "Hello World!";
String hellWrld = helloWorld.replace("o","");

Solution 2 - Java

You can use StringBuffer

StringBuffer text = new StringBuffer("Hello World");
text.replace( StartIndex ,EndIndex ,String);

Solution 3 - Java

Check out Apache StringUtils:

> - static String replace(String text, String searchString, String replacement) Replaces all occurrences of a String within another > String. > - static String replace(String text, String searchString, String replacement, int max) Replaces a String with another String inside a > larger String, for the first max values of the search String. > - static String replaceChars(String str, char searchChar, char replaceChar) Replaces all occurrences of a character in a String with > another. > - static String replaceChars(String str, String searchChars, String replaceChars) Replaces multiple characters in a String in one go. > - static String replaceEach(String text, String[] searchList, String[] replacementList) Replaces all occurrences of Strings within > another String. > - static String replaceEachRepeatedly(String text, String[] searchList, String[] replacementList) Replaces all occurrences of > Strings within another String. > - static String replaceOnce(String text, String searchString, String replacement) Replaces a String with another String inside a > larger String, once. > - static String replacePattern(String source, String regex, String replacement) Replaces each substring of the source String that > matches the given regular expression with the given replacement using > the Pattern.DOTALL option.

Solution 4 - Java

replace('regex', 'replacement');
replaceAll('regex', 'replacement');

In your example,

String hi = "Hello World!"
String no_o = hi.replaceAll("o", "");

Solution 5 - Java

This works good for me.

String hi = "Hello World!"
String no_o = hi.replaceAll("o", "");

or you can use

String no_o = hi.replace("o", "");

Solution 6 - Java

You should have to look at StringBuilder/StringBuffer which allow you to delete, insert, replace char(s) at specified offset.

Solution 7 - Java

You can use Substring also for replacing with existing string:

var str = "abc awwwa";
var Index = str.indexOf('awwwa');
str = str.substring(0, Index);

Solution 8 - Java

If you know the start and end index you may use this

string = string.substring(0, start_index) + string.substring(end_index, string.length());

Solution 9 - Java

replaceAll(String regex, String replacement)

Above method will help to get the answer.

String check = "Hello World";
check = check.replaceAll("o","");

Solution 10 - Java

You can also use guava's CharMatcher.removeFrom function.

Example:

 String s = CharMatcher.is('a').removeFrom("bazaar");

Solution 11 - Java

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));
}

In case you have some complicated logic to filter the char, just another way instead of replace().

Solution 12 - Java

Here is the implementation to delete all the substrings from the given string

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);
}

The implementation of isSubstring() method is here

Solution 13 - Java

You can use

String helloWorld = "Hello World";
String target = "e";
String replacement = "";
String replacedString = helloWorld.replace(target, replacement);

The answer is = Hllo World

or you can use regex

String original = "Java is one of best languages. OOP can be used in Java";
String regexTarget = "\\bJava\\b";
String replacedWord = original.replaceAll(regexTarget, "Python");

The answer is = Python is one of best languages. OOP can be used in Python

Solution 14 - Java

In addition to @DwB answer, you can also use StringUtils remove:

String hello = "hello world";
String hellYeah = StringUtils.remove(hello, "o");

or removeIgnoreCase:

String hello = "hellO world";
String hellYeah = StringUtils.remove(hello, "o");

Attributions

All content for this solution is sourced from the original question on Stackoverflow.

The content on this page is licensed under the Attribution-ShareAlike 4.0 International (CC BY-SA 4.0) license.

Content TypeOriginal AuthorOriginal Content on Stackoverflow
QuestionBelgiView Question on Stackoverflow
Solution 1 - JavaJustin NiessnerView Answer on Stackoverflow
Solution 2 - JavaMagdiView Answer on Stackoverflow
Solution 3 - JavaDwBView Answer on Stackoverflow
Solution 4 - JavaCory KendallView Answer on Stackoverflow
Solution 5 - JavaTariqulView Answer on Stackoverflow
Solution 6 - JavaKV PrajapatiView Answer on Stackoverflow
Solution 7 - JavaDebashish DwivediView Answer on Stackoverflow
Solution 8 - JavaHarshView Answer on Stackoverflow
Solution 9 - JavaOneSixView Answer on Stackoverflow
Solution 10 - JavaEmilView Answer on Stackoverflow
Solution 11 - JavaSeanView Answer on Stackoverflow
Solution 12 - JavaPratik PatilView Answer on Stackoverflow
Solution 13 - JavasajeewaI-View Answer on Stackoverflow
Solution 14 - JavaTom CarmiView Answer on Stackoverflow