Strings
The strings package, formatting with fmt.Sprintf, bytes vs runes, and regular expressions with regexp.
Runs in Zerethon IDE · Go 1.27
Official Go documentation ↗
main.go
package main
import (
"fmt"
"regexp"
"strings"
)
func main() {
name := "Ada Lovelace"
fmt.Printf("%s has %d characters\n", name, len(name))
fmt.Println(strings.ToUpper(name), strings.ToLower(name), name[:3])
fmt.Println(strings.TrimSpace(" padded ") + "|")
fmt.Println(strings.Split("a,b,c", ","), strings.Join([]string{"x", "y", "z"}, "-"))
fmt.Println(strings.ReplaceAll(name, "Ada", "Augusta"), strings.HasPrefix(name, "Ada"), strings.Contains(strings.ToLower(name), "love"))
fmt.Printf("%.2f %5d %03d %q\n", 3.14159, 42, 7, "hi")
fmt.Println(len("héllo"), len([]rune("héllo")))
var b strings.Builder
for i := range 3 {
fmt.Fprintf(&b, "[%d]", i)
}
fmt.Println(b.String())
text := "Order 12 shipped, order 7 pending"
fmt.Println(regexp.MustCompile(`\d+`).FindAllString(text, -1))
m := regexp.MustCompile(`order (\d+) pending`).FindStringSubmatch(text)
fmt.Println(m[1])
}
Output
Ada Lovelace has 12 characters ADA LOVELACE ada lovelace Ada padded| [a b c] x-y-z Augusta Lovelace true true 3.14 42 007 "hi" 6 5 [0][1][2] [12 7] 7
- A string is read-only bytes in UTF-8.
len(s)counts bytes, solen("héllo")is 6;[]rune(s)gives the characters. - A string in backquotes is raw: a regular expression written in backquotes keeps its backslashes (
\d+), which is whatregexpneeds. - Building a long string in a loop: use
strings.Builder, nots += .... FindStringSubmatchreturnsnilwhen nothing matches — check before usingm[1].