Intermediate Exercism • go

Strings Package

Lesson Overview

# Introduction

About

The strings package provides functions for working with strings. Below are some of the functions in the package; check out the documentation to see the rest!

RoleFunctionPurpose
Case ConversionToLowerConvert a string to lower case
Case ConversionToUpperConvert a string to upper case
SearchingContainsCheck if a string contains a specific substring
SearchingCountCount non-overlapping occurrences of a substring
SearchingHasPrefixCheck if a string starts with a specific substring
SearchingHasSuffixCheck if a string ends with a specific substring
SearchingIndexReturn the index of the first occurrence of a substring, or -1
ModifyingReplaceReplace up to n occurrences of a substring
ModifyingReplaceAllReplace all occurrences of a substring
ModifyingTrimSpaceRemove leading and trailing whitespace
Splitting or JoiningFieldsSplit a string into words by whitespace
Splitting or JoiningFieldsSeqGet each word one at a time
Splitting or JoiningJoinJoin a slice of strings with a separator
Splitting or JoiningSplitSplit a string into parts on a separator
Splitting or JoiningSplitSeqGet each part one at a time
import (
    "fmt"
    "strings"
)

// Case conversion
strings.ToLower("Gopher")              // "gopher"
strings.ToUpper("Gopher")              // "GOPHER"

// Searching
strings.Contains("Apple", "le")        // true
strings.Index("Apple", "le")           // 3
strings.Index("Apple", "xyz")          // -1
strings.Count("test", "t")             // 2
strings.HasPrefix("Gopher", "Go")      // true
strings.HasSuffix("Gopher", "er")      // true

// Modifying
strings.TrimSpace("  hello  ")         // "hello"
strings.Replace("aabbcc", "b", "x", 1) // "aaxbcc"
strings.ReplaceAll("aabbcc", "b", "x") // "aaxxcc"

// Splitting or Joining
strings.Fields("  a b\tc  ")               // []string{"a", "b", "c"}
strings.Split("a,b,c", ",")                // []string{"a", "b", "c"}
strings.Join([]string{"a", "b", "c"}, ",") // "a,b,c"

// You do not need to worry about this range syntax yet.
// It is covered later in the range iteration concept.
for word := range strings.FieldsSeq("  a b\tc  ") {
    fmt.Println(word)
}
// Output:
// a
// b
// c

for part := range strings.SplitSeq("a,b,c", ",") {
    fmt.Println(part)
}
// Output:
// a
// b
// c

Originally from Exercism go concepts