👯 Remove duplicate spaces from a string in Go
Table of Contents
To remove duplicate whitespaces from a string in Go, use strings.Fields() function that splits the string around one or more whitespace characters, then join the slice of substrings using strings.Join() with a single space separator. Alternatively, you can use a regular expression to find duplicate whitespace characters and replace them using the ReplaceAllString() method from the regexp package.
Remove duplicate whitespaces using strings.Fields() function #
package main
import (
"fmt"
"strings"
)
func main() {
s := "GOSAMPLES.dev is \t \r\n the best Golang \t\t\t\t website in the \n world!"
res := strings.Join(strings.Fields(s), " ")
fmt.Println(res)
}
In this method, we do two things:
- We split the string around one or more whitespace characters using the
strings.Fields()function. The whitespace characters are defined byunicode.IsSpace(), and include'\t','\n','\r',' ', among others. As a result, we get the slice:
[]string{"GOSAMPLES.dev", "is", "the", "best", "Golang", "website", "in", "the", "world!"}
- We join the slice of substrings using the
strings.Join()function with a single space" "as a separator. This way, we construct the result string with all duplicate whitespaces removed.
Remove duplicate whitespaces using regular expressions #
package main
import (
"fmt"
"regexp"
)
func main() {
s := "GOSAMPLES.dev is \t \r\n the best Golang \t\t\t\t website in the \n world!"
pattern := regexp.MustCompile(`\s+`)
res := pattern.ReplaceAllString(s, " ")
fmt.Println(res)
}
Using regular expressions, we can achieve the same effect as in the previous method. We define \s+ pattern that matches at least one whitespace character ([ \t\r\n\f]) and then replace all occurrences of that expression with a single space, obtaining the string with duplicate whitespaces removed.
Both methods produce the same result, which is:
GOSAMPLES.dev is the best Golang website in the world!