Golang : Removes punctuation or defined delimiter from the user's input
Problem :
You need to clean up your user's input from punctuation or certain delimiter defined by you. For example, you need to parse the user's input, but only want to deal with words and certain symbols for tokenizing purpose. How to do that?
Solution :
First, we will write a function to test if the single character is a punctuation or defined delimiter.
package main
import (
"fmt"
"strings"
)
const delim = "?!.;,*"
func isDelim(c string) bool {
if strings.Contains(delim, c) {
return true
}
return false
}
func main() {
char := "i"
fmt.Printf("Is [%v] a delim : %v\n", char, isDelim(char))
char = ","
fmt.Printf("Is [%v] a delim : %v\n", char, isDelim(char))
char = ";"
fmt.Printf("Is [%v] a delim : %v\n", char, isDelim(char))
char = "s"
fmt.Printf("Is [%v] a delim : %v\n", char, isDelim(char))
}
Output :
Is [i] a delim : false
Is [,] a delim : true
Is [;] a delim : true
Is [s] a delim : false
Then, iterate each of the characters in a string to test out if the character is a punctuation or delimiter defined by you.
package main
import (
"fmt"
"strings"
)
const delim = "?!.;,*"
func isDelim(c string) bool {
if strings.Contains(delim, c) {
return true
}
return false
}
func cleanString(input string) string {
size := len(input)
temp := ""
var prevChar string
for i := 0; i < size; i++ {
//fmt.Println(input[i])
str := string(input[i]) // convert to string for easier operation
if (str == " " && prevChar != " ") || !isDelim(str) {
temp += str
prevChar = str
} else if prevChar != " " && isDelim(str) {
temp += " "
}
}
return temp
}
func main() {
str := "H ello! Who are you?!, What are you?"
newStr := cleanString(str)
fmt.Println("Original : ", str)
fmt.Println("Cleaned : ", newStr)
}
Output :
Original : H ello! Who are you?!, What are you?
Cleaned : H ello Who are you What are you
Reference :
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+17k Golang : Get all upper case or lower case characters from string example
+7.2k Golang : Multiplexer with net/http and map
+26.4k Golang : Convert integer to binary, octal, hexadecimal and back to integer
+7.1k Golang : Gomobile init produce "iphoneos" cannot be located error
+26.1k Golang : dial tcp: too many colons in address
+6.6k Android Studio : How to detect camera, activate and capture example
+12.5k Golang : Get constant name from value
+22.6k Golang : Fix type interface{} has no field or no methods and type assertions example
+7.3k Golang : Emulate NumPy way of creating matrix example
+9.1k Golang : Ordinal and Ordinalize a given number to the English ordinal numeral
+16.3k Golang : When to use init() function?
+21.2k Golang : Read directory content with filepath.Walk()