Documentation ¶
Overview ¶
Package strings implements simple functions to manipulate strings.
Index ¶
- func Compare(a, b string) int
- func Contains(s, substr string) bool
- func ContainsAny(s, chars string) bool
- func ContainsRune(s string, r rune) bool
- func Count(s, sep string) int
- func EqualFold(s, t string) bool
- func Fields(s string) []string
- func FieldsFunc(s string, f func(rune) bool) []string
- func HasPrefix(s, prefix string) bool
- func HasSuffix(s, suffix string) bool
- func Index(s, sep string) int
- func IndexAny(s, chars string) int
- func IndexByte(s string, c byte) int
- func IndexFunc(s string, f func(rune) bool) int
- func IndexRune(s string, r rune) int
- func Join(a []string, sep string) string
- func LastIndex(s, sep string) int
- func LastIndexAny(s, chars string) int
- func LastIndexFunc(s string, f func(rune) bool) int
- func Map(mapping func(rune) rune, s string) string
- func Repeat(s string, count int) string
- func Replace(s, old, new string, n int) string
- func Split(s, sep string) []string
- func SplitAfter(s, sep string) []string
- func SplitAfterN(s, sep string, n int) []string
- func SplitN(s, sep string, n int) []string
- func Title(s string) string
- func ToLower(s string) string
- func ToLowerSpecial(_case unicode.SpecialCase, s string) string
- func ToTitle(s string) string
- func ToTitleSpecial(_case unicode.SpecialCase, s string) string
- func ToUpper(s string) string
- func ToUpperSpecial(_case unicode.SpecialCase, s string) string
- func Trim(s string, cutset string) string
- func TrimFunc(s string, f func(rune) bool) string
- func TrimLeft(s string, cutset string) string
- func TrimLeftFunc(s string, f func(rune) bool) string
- func TrimPrefix(s, prefix string) string
- func TrimRight(s string, cutset string) string
- func TrimRightFunc(s string, f func(rune) bool) string
- func TrimSpace(s string) string
- func TrimSuffix(s, suffix string) string
- type Reader
- func (r *Reader) Len() int
- func (r *Reader) Read(b []byte) (n int, err error)
- func (r *Reader) ReadAt(b []byte, off int64) (n int, err error)
- func (r *Reader) ReadByte() (b byte, err error)
- func (r *Reader) ReadRune() (ch rune, size int, err error)
- func (r *Reader) Seek(offset int64, whence int) (int64, error)
- func (r *Reader) UnreadByte() error
- func (r *Reader) UnreadRune() error
- func (r *Reader) WriteTo(w io.Writer) (n int64, err error)
- type Replacer
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func Compare ¶
Compare returns an integer comparing two strings lexicographically. The result will be 0 if a==b, -1 if a < b, and +1 if a > b.
Compare is included only for symmetry with package bytes. It is usually clearer and always faster to use the built-in string comparison operators ==, <, >, and so on.
func Contains ¶
Contains reports whether substr is within s.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.Contains("seafood", "foo")) fmt.Println(strings.Contains("seafood", "bar")) fmt.Println(strings.Contains("seafood", "")) fmt.Println(strings.Contains("", "")) }
Output: true false true true
func ContainsAny ¶
ContainsAny reports whether any Unicode code points in chars are within s.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.ContainsAny("team", "i")) fmt.Println(strings.ContainsAny("failure", "u & i")) fmt.Println(strings.ContainsAny("foo", "")) fmt.Println(strings.ContainsAny("", "")) }
Output: false true false false
func ContainsRune ¶
ContainsRune reports whether the Unicode code point r is within s.
func Count ¶
Count counts the number of non-overlapping instances of sep in s. If sep is an empty string, Count returns 1 + the number of Unicode code points in s.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.Count("cheese", "e")) fmt.Println(strings.Count("five", "")) // before & after each rune }
Output: 3 5
func EqualFold ¶
EqualFold reports whether s and t, interpreted as UTF-8 strings, are equal under Unicode case-folding.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.EqualFold("Go", "go")) }
Output: true
func Fields ¶
Fields splits the string s around each instance of one or more consecutive white space characters, as defined by unicode.IsSpace, returning an array of substrings of s or an empty list if s contains only white space.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Printf("Fields are: %q", strings.Fields(" foo bar baz ")) }
Output: Fields are: ["foo" "bar" "baz"]
func FieldsFunc ¶
FieldsFunc splits the string s at each run of Unicode code points c satisfying f(c) and returns an array of slices of s. If all code points in s satisfy f(c) or the string is empty, an empty slice is returned. FieldsFunc makes no guarantees about the order in which it calls f(c). If f does not return consistent results for a given c, FieldsFunc may crash.
Example ¶
package main import ( "fmt" "strings" "unicode" ) func main() { f := func(c rune) bool { return !unicode.IsLetter(c) && !unicode.IsNumber(c) } fmt.Printf("Fields are: %q", strings.FieldsFunc(" foo1;bar2,baz3...", f)) }
Output: Fields are: ["foo1" "bar2" "baz3"]
func Index ¶
Index returns the index of the first instance of sep in s, or -1 if sep is not present in s.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.Index("chicken", "ken")) fmt.Println(strings.Index("chicken", "dmr")) }
Output: 4 -1
func IndexAny ¶
IndexAny returns the index of the first instance of any Unicode code point from chars in s, or -1 if no Unicode code point from chars is present in s.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.IndexAny("chicken", "aeiouy")) fmt.Println(strings.IndexAny("crwth", "aeiouy")) }
Output: 2 -1
func IndexByte ¶
IndexByte returns the index of the first instance of c in s, or -1 if c is not present in s.
func IndexFunc ¶
IndexFunc returns the index into s of the first Unicode code point satisfying f(c), or -1 if none do.
Example ¶
package main import ( "fmt" "strings" "unicode" ) func main() { f := func(c rune) bool { return unicode.Is(unicode.Han, c) } fmt.Println(strings.IndexFunc("Hello, 世界", f)) fmt.Println(strings.IndexFunc("Hello, world", f)) }
Output: 7 -1
func IndexRune ¶
IndexRune returns the index of the first instance of the Unicode code point r, or -1 if rune is not present in s.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.IndexRune("chicken", 'k')) fmt.Println(strings.IndexRune("chicken", 'd')) }
Output: 4 -1
func Join ¶
Join concatenates the elements of a to create a single string. The separator string sep is placed between elements in the resulting string.
Example ¶
package main import ( "fmt" "strings" ) func main() { s := []string{"foo", "bar", "baz"} fmt.Println(strings.Join(s, ", ")) }
Output: foo, bar, baz
func LastIndex ¶
LastIndex returns the index of the last instance of sep in s, or -1 if sep is not present in s.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.Index("go gopher", "go")) fmt.Println(strings.LastIndex("go gopher", "go")) fmt.Println(strings.LastIndex("go gopher", "rodent")) }
Output: 0 3 -1
func LastIndexAny ¶
LastIndexAny returns the index of the last instance of any Unicode code point from chars in s, or -1 if no Unicode code point from chars is present in s.
func LastIndexFunc ¶
LastIndexFunc returns the index into s of the last Unicode code point satisfying f(c), or -1 if none do.
func Map ¶
Map returns a copy of the string s with all its characters modified according to the mapping function. If mapping returns a negative value, the character is dropped from the string with no replacement.
Example ¶
package main import ( "fmt" "strings" ) func main() { rot13 := func(r rune) rune { switch { case r >= 'A' && r <= 'Z': return 'A' + (r-'A'+13)%26 case r >= 'a' && r <= 'z': return 'a' + (r-'a'+13)%26 } return r } fmt.Println(strings.Map(rot13, "'Twas brillig and the slithy gopher...")) }
Output: 'Gjnf oevyyvt naq gur fyvgul tbcure...
func Repeat ¶
Repeat returns a new string consisting of count copies of the string s.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Println("ba" + strings.Repeat("na", 2)) }
Output: banana
func Replace ¶
Replace returns a copy of the string s with the first n non-overlapping instances of old replaced by new. If old is empty, it matches at the beginning of the string and after each UTF-8 sequence, yielding up to k+1 replacements for a k-rune string. If n < 0, there is no limit on the number of replacements.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.Replace("oink oink oink", "k", "ky", 2)) fmt.Println(strings.Replace("oink oink oink", "oink", "moo", -1)) }
Output: oinky oinky oink moo moo moo
func Split ¶
Split slices s into all substrings separated by sep and returns a slice of the substrings between those separators. If sep is empty, Split splits after each UTF-8 sequence. It is equivalent to SplitN with a count of -1.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Printf("%q\n", strings.Split("a,b,c", ",")) fmt.Printf("%q\n", strings.Split("a man a plan a canal panama", "a ")) fmt.Printf("%q\n", strings.Split(" xyz ", "")) fmt.Printf("%q\n", strings.Split("", "Bernardo O'Higgins")) }
Output: ["a" "b" "c"] ["" "man " "plan " "canal panama"] [" " "x" "y" "z" " "] [""]
func SplitAfter ¶
SplitAfter slices s into all substrings after each instance of sep and returns a slice of those substrings. If sep is empty, SplitAfter splits after each UTF-8 sequence. It is equivalent to SplitAfterN with a count of -1.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Printf("%q\n", strings.SplitAfter("a,b,c", ",")) }
Output: ["a," "b," "c"]
func SplitAfterN ¶
SplitAfterN slices s into substrings after each instance of sep and returns a slice of those substrings. If sep is empty, SplitAfterN splits after each UTF-8 sequence. The count determines the number of substrings to return:
n > 0: at most n substrings; the last substring will be the unsplit remainder. n == 0: the result is nil (zero substrings) n < 0: all substrings
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Printf("%q\n", strings.SplitAfterN("a,b,c", ",", 2)) }
Output: ["a," "b,c"]
func SplitN ¶
SplitN slices s into substrings separated by sep and returns a slice of the substrings between those separators. If sep is empty, SplitN splits after each UTF-8 sequence. The count determines the number of substrings to return:
n > 0: at most n substrings; the last substring will be the unsplit remainder. n == 0: the result is nil (zero substrings) n < 0: all substrings
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Printf("%q\n", strings.SplitN("a,b,c", ",", 2)) z := strings.SplitN("a,b,c", ",", 0) fmt.Printf("%q (nil = %v)\n", z, z == nil) }
Output: ["a" "b,c"] [] (nil = true)
func Title ¶
Title returns a copy of the string s with all Unicode letters that begin words mapped to their title case.
BUG: The rule Title uses for word boundaries does not handle Unicode punctuation properly.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.Title("her royal highness")) }
Output: Her Royal Highness
func ToLower ¶
ToLower returns a copy of the string s with all Unicode letters mapped to their lower case.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.ToLower("Gopher")) }
Output: gopher
func ToLowerSpecial ¶
func ToLowerSpecial(_case unicode.SpecialCase, s string) string
ToLowerSpecial returns a copy of the string s with all Unicode letters mapped to their lower case, giving priority to the special casing rules.
func ToTitle ¶
ToTitle returns a copy of the string s with all Unicode letters mapped to their title case.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.ToTitle("loud noises")) fmt.Println(strings.ToTitle("хлеб")) }
Output: LOUD NOISES ХЛЕБ
func ToTitleSpecial ¶
func ToTitleSpecial(_case unicode.SpecialCase, s string) string
ToTitleSpecial returns a copy of the string s with all Unicode letters mapped to their title case, giving priority to the special casing rules.
func ToUpper ¶
ToUpper returns a copy of the string s with all Unicode letters mapped to their upper case.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.ToUpper("Gopher")) }
Output: GOPHER
func ToUpperSpecial ¶
func ToUpperSpecial(_case unicode.SpecialCase, s string) string
ToUpperSpecial returns a copy of the string s with all Unicode letters mapped to their upper case, giving priority to the special casing rules.
func Trim ¶
Trim returns a slice of the string s with all leading and trailing Unicode code points contained in cutset removed.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Printf("[%q]", strings.Trim(" !!! Achtung! Achtung! !!! ", "! ")) }
Output: ["Achtung! Achtung"]
func TrimFunc ¶
TrimFunc returns a slice of the string s with all leading and trailing Unicode code points c satisfying f(c) removed.
func TrimLeft ¶
TrimLeft returns a slice of the string s with all leading Unicode code points contained in cutset removed.
func TrimLeftFunc ¶
TrimLeftFunc returns a slice of the string s with all leading Unicode code points c satisfying f(c) removed.
func TrimPrefix ¶
TrimPrefix returns s without the provided leading prefix string. If s doesn't start with prefix, s is returned unchanged.
Example ¶
package main import ( "fmt" "strings" ) func main() { var s = "Goodbye,, world!" s = strings.TrimPrefix(s, "Goodbye,") s = strings.TrimPrefix(s, "Howdy,") fmt.Print("Hello" + s) }
Output: Hello, world!
func TrimRight ¶
TrimRight returns a slice of the string s, with all trailing Unicode code points contained in cutset removed.
func TrimRightFunc ¶
TrimRightFunc returns a slice of the string s with all trailing Unicode code points c satisfying f(c) removed.
func TrimSpace ¶
TrimSpace returns a slice of the string s, with all leading and trailing white space removed, as defined by Unicode.
Example ¶
package main import ( "fmt" "strings" ) func main() { fmt.Println(strings.TrimSpace(" \t\n a lone gopher \n\t\r\n")) }
Output: a lone gopher
func TrimSuffix ¶
TrimSuffix returns s without the provided trailing suffix string. If s doesn't end with suffix, s is returned unchanged.
Example ¶
package main import ( "fmt" "strings" ) func main() { var s = "Hello, goodbye, etc!" s = strings.TrimSuffix(s, "goodbye, etc!") s = strings.TrimSuffix(s, "planet") fmt.Print(s, "world!") }
Output: Hello, world!
Types ¶
type Reader ¶
type Reader struct {
// contains filtered or unexported fields
}
A Reader implements the io.Reader, io.ReaderAt, io.Seeker, io.WriterTo, io.ByteScanner, and io.RuneScanner interfaces by reading from a string.
func NewReader ¶
NewReader returns a new Reader reading from s. It is similar to bytes.NewBufferString but more efficient and read-only.
func (*Reader) UnreadByte ¶
func (*Reader) UnreadRune ¶
type Replacer ¶
type Replacer struct {
// contains filtered or unexported fields
}
Replacer replaces a list of strings with replacements. It is safe for concurrent use by multiple goroutines.
func NewReplacer ¶
NewReplacer returns a new Replacer from a list of old, new string pairs. Replacements are performed in order, without overlapping matches.
Example ¶
package main import ( "fmt" "strings" ) func main() { r := strings.NewReplacer("<", "<", ">", ">") fmt.Println(r.Replace("This is <b>HTML</b>!")) }
Output: This is <b>HTML</b>!