Go言語の文字列には、stringsパッケージが主に使われます。今回はその中から、「最初、あるいは最後に特定の文字列があるか判定する」「特定の文字列を置換する」方法を紹介したいと思います。
Contents
前方/後方一致
ある文字列を最初(最後)に含むかの判定には、strings.HasPrefix
あるいはstrings.HasSuffix
が使えます。
package mainimport ("fmt""strings")func main() {fmt.Println(strings.HasPrefix("abcdefg", "abc")) // truefmt.Println(strings.HasPrefix("abcdefg", "Abc")) // false fmt.Println(strings.HasSuffix("vwxyz", "yz")) // true fmt.Println(strings.HasSuffix("vwxyz", "Yz")) // false}
上のサンプルコードからもわかる通り、双方とも、大文字と小文字は厳密に判定されます。
文字列置換
文字列の置換には、strings.Replace
関数を利用することができます。
package mainimport ("fmt""strings")func main() { fmt.Println(strings.Replace("abcdefabc", "abc", "ABC", 1)) // ABCdefabc fmt.Println(strings.Replace("abcdefabc", "abc", "ABC", 2)) // ABCdefABC fmt.Println(strings.Replace("abcdefabc", "abc", "ABC", -1)) // ABCdefABC}
第一引数に与えた文字列の内、第二引数の部分文字列を、第三引数に与えた文字列で置換する、という挙動になります。第四引数の数値は、「同じ部分文字列の内、最初から何番目までを置換するか」を表しています。ここが負の値なら、最後から・・ではなく、「とくに制限は設けないので、バンバン置換しちゃってください」という意味になります。
また、特に気にせず対象の部分文字列すべてを入れ替えたい時は、strings.ReplaceAll()
も使えます。
package mainimport ("fmt""strings")func main() { fmt.Println(strings.ReplaceAll("abcdefabc", "abc", "ABC")) // ABCdefABC}