'How to Trim "[" char from a string in Golang
Probably a silly thing but got stuck on it for a bit...
Can't trim a "[" char from a string, things I tried with outputs:
package main
import (
"fmt"
"strings"
)
func main() {
s := "this[things]I would like to remove"
t := strings.Trim(s, "[")
fmt.Printf("%s\n", t)
}
// output: this[things]I would like to remove
Also tried all of those, with no success:
s := "this [ things]I would like to remove"
t := strings.Trim(s, " [ ")
// output: this [ things]I would like to remove
s := "this [ things]I would like to remove"
t := strings.Trim(s, "[")
// output: this [ things]I would like to remove
None worked. What am I missing here?
Solution 1:[1]
You are missing reading the doc. strings.Trim():
func Trim(s string, cutset string) stringTrim returns a slice of the string s with all leading and trailing Unicode code points contained in cutset removed.
The [ character in your input is not in a leading nor in a trailing position, it is in the middle, so strings.Trim() – being well behavior – will not remove it.
Try strings.Replace() instead:
s := "this[things]I would like to remove"
t := strings.Replace(s, "[", "", -1)
fmt.Printf("%s\n", t)
Output (try it on the Go Playground):
thisthings]I would like to remove
There is also a strings.ReplaceAll() added in Go 1.12 (which is basically a "shorthand" for Replace(s, old, new, -1)).
Solution 2:[2]
Try this
package main
import (
"fmt"
"strings"
)
func main() {
s := "this[things]I would like to remove"
t := strings.Index(s, "[")
fmt.Printf("%d\n", t)
fmt.Printf("%s\n", s[0:t])
}
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
| Solution | Source |
|---|---|
| Solution 1 | Thiago Guimarães |
| Solution 2 | Rizal H. |
