Trim
Often a string
has leading or trailing characters on it (like whitespace) that we do not want. These can be stripped or trimmed away.
In Go we can invoke the Trim
func
, or one of its many variants like TrimPrefix
. We can remove more than just spaces—any rune
, or range of runes, can be trimmed.
Trim
, TrimLeft
, TrimRight
Let us begin with the simplest Trim
methods. We can call Trim
with 2 arguments—a string
containing characters to remove is the second argument.
string
. The TrimSpace
func
could be used instead of Trim
.package main import ( "fmt" "strings" ) func main() { test := " hello " // Remove spaces with Trim, TrimLeft, TrimRight. result1 := strings.Trim(test, " ") result2 := strings.TrimLeft(test, " ") result3 := strings.TrimRight(test, " ") fmt.Println("{" + result1 + "}") fmt.Println("{" + result2 + "}") fmt.Println("{" + result3 + "}") }{hello} {hello } { hello}
TrimSpace
For just spaces and newlines, we can use TrimSpace
. This is a better choice if a variety of whitespace runes may be present on the start or end of a string
.
package main import ( "fmt" "strings" ) func main() { test := " hello \n" // Remove leading and training whitespace chars. result1 := strings.TrimSpace(test) fmt.Println("{" + result1 + "}") }{hello}
In Go we find many "prefix" and "suffix" funcs. These act on the starts and ends of strings. A prefix or suffix that we want to remove is passed as the second argument.
TrimPrefix
and TrimSuffix
, the string
is left unchanged if the argument cannot be found.package main import ( "fmt" "strings" ) func main() { test1 := "https://www.example.com/" fmt.Println(":::TRIM PREFIX:::") result1 := strings.TrimPrefix(test1, "https://") fmt.Println(result1) fmt.Println(":::TRIM SUFFIX:::") result2 := strings.TrimSuffix(test1, ".com/") fmt.Println(result2) // If we try to trim something that is not there, nothing happens. result3 := strings.TrimSuffix(test1, ".net/") fmt.Println(result3) }:::TRIM PREFIX::: www.example.com/ :::TRIM SUFFIX::: https://www.example https://www.example.com/
TrimFunc
We can use TrimFunc
and pass a func
that receives a rune
(and returns a bool
) as the second argument. The func
can test the rune
's value and return true if it should be trimmed.
func
. If the ASCII value represents a digit between 0 and 9, we remove it.package main import ( "fmt" "strings" ) func main() { source := "123Hello4567" // Use TrimFunc with a rune-testing function. // ... If rune is a digit in ASCII return true. // These chars are removed. result := strings.TrimFunc(source, func(c rune) bool { return c >= 48 && c <= 57 }) fmt.Println("{" + result + "}") }{Hello}
Trimming strings is important in Go programs. We access Trim
funcs in the "strings" package—be sure to import "strings" in your program.