Remove Character from String in Java (Different Ways)

In this article, we will explore different ways to remove a character from a string in Java. Each method offers a unique approach to solving the problem, ranging from basic loops to more advanced string manipulation techniques.

Problem Statement

Given a string and a character, remove all occurrences of the character from the string.

Example:

  • Input: "programming", 'm'
  • Output: "prograping" (All occurrences of 'm' are removed)

Approach 1: Using replace() Method

Explanation

The replace() method is a simple and effective way to remove a specific character from a string. This method replaces all occurrences of a given character with an empty string.

Java Code

public class RemoveCharacter {

    public static void main(String[] args) {
        String str = "programming";
        char ch = 'm';

        String result = str.replace(Character.toString(ch), "");

        System.out.println("String after removing '" + ch + "': " + result);
    }
}

Output

String after removing 'm': prograping

Explanation

  • The replace() method is used to replace all occurrences of the character 'm' with an empty string "".

Approach 2: Using replaceAll() Method with Regular Expression

Explanation

The replaceAll() method can be used with a regular expression to remove a specific character from a string. This method is more powerful and flexible than replace() because it can handle more complex patterns.

Java Code


import java.util.regex.Pattern;

public class RemoveCharacterRegex {

    public static void main(String[] args) {
        String str = "programming";
        char ch = 'm';

        String result = str.replaceAll(Pattern.quote(Character.toString(ch)), "");

        System.out.println("String after removing '" + ch + "': " + result);
    }
}

Output

String after removing 'm': prograping

Explanation

  • The replaceAll() method is used with a regular expression to remove all occurrences of the character 'm'.

Approach 3: Using StringBuilder

Explanation

Using a StringBuilder allows us to efficiently build a new string by skipping the character to be removed. This approach is particularly useful when performance is a concern, as StringBuilder is mutable and avoids the overhead of creating multiple string objects.

Java Code

public class RemoveCharacterStringBuilder {

    public static void main(String[] args) {
        String str = "programming";
        char ch = 'm';

        StringBuilder sb = new StringBuilder();

        for (int i = 0; i < str.length(); i++) {
            if (str.charAt(i) != ch) {
                sb.append(str.charAt(i));
            }
        }

        String result = sb.toString();

        System.out.println("String after removing '" + ch + "': " + result);
    }
}

Output

String after removing 'm': prograping

Explanation

  • A StringBuilder is used to build the resulting string by appending characters that are not equal to 'm'.

Approach 4: Using Recursion

Explanation

Recursion can be used to solve the problem by iterating through the string, checking each character, and building the result without the unwanted character. This approach is more elegant but less efficient than the iterative approaches.

Java Code

public class RemoveCharacterRecursion {

    public static void main(String[] args) {
        String str = "programming";
        char ch = 'm';

        String result = removeChar(str, ch);

        System.out.println("String after removing '" + ch + "': " + result);
    }

    public static String removeChar(String str, char ch) {
        if (str.isEmpty()) {
            return str;
        }
        if (str.charAt(0) == ch) {
            return removeChar(str.substring(1), ch);
        }
        return str.charAt(0) + removeChar(str.substring(1), ch);
    }
}

Output

String after removing 'm': prograping

Explanation

  • The recursive method removeChar checks each character of the string. If it matches the character to be removed, it skips that character and processes the rest of the string.

Approach 5: Using Java 8 Streams

Explanation

Java 8's Stream API provides a functional-style approach to remove a character from a string. This method is concise and leverages the power of streams and lambda expressions.

Java Code

import java.util.stream.Collectors;

public class RemoveCharacterStream {

    public static void main(String[] args) {
        String str = "programming";
        char ch = 'm';

        String result = str.chars()
                .filter(c -> c != ch)
                .mapToObj(c -> String.valueOf((char) c))
                .collect(Collectors.joining());

        System.out.println("String after removing '" + ch + "': " + result);
    }
}

Output

String after removing 'm': prograping

Explanation

  • The Stream API is used to filter out the character 'm', and then the remaining characters are collected back into a string.

Conclusion

These five approaches demonstrate different ways to remove a character from a string in Java. The replace() and replaceAll() methods offer simple and direct solutions, while StringBuilder and recursion provide more control and flexibility. The Java 8 Stream API approach is modern and concise, leveraging functional programming principles. Each method has its own advantages, and the choice of which to use depends on the specific requirements and constraints of your project.

Comments