Removing punctuations from a given string
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:
- Initialize the input string
- Check if the character present in the string is punctuation or not.
- If a character is a punctuation, then erase that character and decrement the index.
- Print the output string, which will be free of any punctuation.
Below is the implementation of the above approach:
// 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 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
# 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# 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
<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.
// 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;
}
//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
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))
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;
}
}
// 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)