Open In App
Related Articles

Removing punctuations from a given string

Improve
Improve
Improve
Like Article
Like
Save Article
Save
Report issue
Report

Given a string, remove the punctuation from the string if the given character is a punctuation character, as classified by the current C locale. The default C locale classifies these characters as punctuation: 

! " # $ % & ' ( ) * + , - . / : ; ? @ [ \ ] ^ _ ` { | } ~ 

Examples: 

Input : %welcome' to @geeksforgeek<s
Output : welcome to geeksforgeeks

Input : Hello!!!, he said ---and went.
Output : Hello he said and went

Approach: First check the input string if it consists of punctuations then we have to make it punctuation free. In order to do this, we will traverse over the string, and if punctuations are found we will remove them. Let’s say the input string is ‘$Student@‘ then we have to remove $ and @, furthermore we have to print the plain string ‘Student‘ which is free from any punctuations.

Algorithm:

  1. Initialize the input string
  2. Check if the character present in the string is punctuation or not.
  3. If a character is a punctuation, then erase that character and decrement the index.
  4. Print the output string, which will be free of any punctuation.

Below is the implementation of the above approach:

C++

// CPP program to remove punctuation from a given string
 
#include <iostream>
using namespace std;
 
int main()
{
    // input string
    std::string str = "Welcome???@@##$ to#$% Geeks%$^for$%^&Geeks";
 
    for (int i = 0, len = str.size(); i < len; i++)
    {
        // check whether parsing character is punctuation or not
        if (ispunct(str[i]))
        {
            str.erase(i--, 1);
            len = str.size();
        }
    }
     
    // print string without punctuation
    std::cout << str;
    return 0;
}

                    

Java

// Java program to remove punctuation from a given string
 
public class Test
{
    public static void main(String[] args)
    {
        // input string
        String str = "Welcome???@@##$ to#$% Geeks%$^for$%^&Geeks";
         
        // similar to Matcher.replaceAll
        str = str.replaceAll("\\p{Punct}","");
         
        System.out.println(str);
    }
     
}
// This code is contributed by Gaurav Miglani

                    

Python3

# Python program to remove punctuation from a given string
# Function to remove punctuation
def Punctuation(string):
 
    # punctuation marks
    punctuations = '''!()-[]{};:'"\,<>./?@#$%^&*_~'''
 
    # traverse the given string and if any punctuation
    # marks occur replace it with null
    for x in string.lower():
        if x in punctuations:
            string = string.replace(x, "")
 
    # Print string without punctuation
    print(string)
 
# Driver program
string = "Welcome???@@##$ to#$% Geeks%$^for$%^&Geeks"
Punctuation(string)

                    

C#

// C# program to remove punctuation
// from a given string
using System;
using System.Text.RegularExpressions;                
 
class GFG
{
public static void Main()
{
    // input string
    String str = "Welcome???@@##$ to#$% Geeks%$^for$%^&Geeks";
     
    // similar to Matcher.replaceAll
    str = Regex.Replace(str,@"[^\w\d\s]","");
     
    Console.Write(str);
}
}
 
// This code is contributed
// by 29AjayKumar

                    

Javascript

<script>
 
// JavaScript program to remove punctuation from a given string
    {
        // input string
        var str = "Welcome???@@##$ to#$% Geeks%$^for$%^&Geeks";
         
        // similar to Matcher.replaceAll
        str = str.replace(/[^a-zA-Z ]/g, "");
         
        document.write(str);
    }
     
// This code is contributed by shivanisingh
 
</script>

                    

Output
Welcome to GeeksforGeeks

Time Complexity: O(n2
Auxiliary Space: O(1)

Approach 2 : –  Using a loop to iterate over the string and remove punctuations

   Initialize an empty string called result.
   Iterate over the characters in the given string using a loop.
   For each character, check if it is a punctuation character using the ispunct function.
   If the character is not a punctuation character, add it to the result string.
   Repeat steps 3-4 for all characters in the string.
   Replace the original string with the result string, effectively removing all punctuation characters from the original string.

This approach may be useful in cases where you need to perform additional operations on each character in the string before removing punctuations, or if you need to process the string character-by-character rather than using a built-in algorithm.

C++

// CPP program to remove punctuation from a given string
 
#include <iostream>
using namespace std;
string removePunctuations(std::string& s) {
    std::string result = "";
    for (char c : s) {
        if (!ispunct(c)) { // If c is not a punctuation character
            result += c;
        }
    }
    s = result;
    return s;
}
 
int main()
{
    // input string
    std::string str = "Welcome???@@##$ to#$% Geeks%$^for$%^&Geeks";
 
    // print string without punctuation
    std::cout << removePunctuations(str);
    return 0;
}

                    

Java

//GFG
//Java Code for the given approach
import java.util.*;
public class RemovePunctuations {
    public static String removePunctuations(String s) {
        StringBuilder result = new StringBuilder();
        for (char c : s.toCharArray()) {
            if (Character.isLetterOrDigit(c) || Character.isWhitespace(c)) { // If c is a letter, digit, or whitespace
                result.append(c);
            }
        }
        return result.toString();
    }
     
    public static void main(String[] args) {
        // input string
        String str = "Welcome???@@##$ to#$% Geeks%$^for$%^&Geeks";
 
        // print string without punctuation
        System.out.println(removePunctuations(str));
    }
}
// This code is written by Sundaram

                    

Python3

import re
 
# Function to remove punctuation from a given string
def removePunctuations(s):
    result = ""
    for c in s:
        if not re.match(r"[.,\/#!$%\^&\*;:{}=\-_`~()@?]", c): # If c is not a punctuation character
            result += c
    s = result
    return s
 
# Main function
# Input string
str = "Welcome???@@##$ to#$% Geeks%$^for$%^&Geeks"
 
# Print string without punctuation
print(removePunctuations(str))

                    

C#

using System;
using System.Text.RegularExpressions;
 
class Program {
    static void Main(string[] args)
    {
        // Input string
        string str
            = "Welcome???@@##$ to#$% Geeks%$^for$%^&Geeks";
 
        // Print string without punctuation
        Console.WriteLine(RemovePunctuations(str));
    }
 
    // Function to remove punctuation from a given string
    static string RemovePunctuations(string s)
    {
        string result = "";
        foreach(char c in s)
        {
            if (!Regex.IsMatch(
                    c.ToString(),
                    @"[.,\/#!$%\^&\*;:{}=\-_`~()@?]")) // If
                                                       // c
                                                       // is
                                                       // not
                                                       // a
                                                       // punctuation
                                                       // character
            {
                result += c;
            }
        }
        s = result;
        return s;
    }
}

                    

Javascript

// Function to remove punctuation from a given string
function removePunctuations(s) {
    let result = "";
    for (let c of s) {
        if (!c.match(/[.,\/#!$%\^&\*;:{}=\-_`~()@?]/g)) { // If c is not a punctuation character
            result += c;
        }
    }
    s = result;
    return s;
}
 
// Main function
// Input string
let str = "Welcome???@@##$ to#$% Geeks%$^for$%^&Geeks";
 
// Print string without punctuation
console.log(removePunctuations(str));

                    

Output
Welcome to GeeksforGeeks

Time Complexity: O(n), where n is the size of the string
Auxiliary Space: O(1)

 



Last Updated : 05 Apr, 2023
Like Article
Save Article
Previous
Next
Share your thoughts in the comments
Similar Reads