Go言語_文字列操作
文字列検索系
文字列中に、任意の文字列が含まれるかどうかを判定するには以下の関数を利用できます。
package main
import (
"fmt"
"strings"
)
func main() {
str := "The Go Programming Language"
// 文字列が含まれるか判定する。
if strings.Contains(str, "Go") {
fmt.Println("Contains return true!")
}
// 開始文字列を判定する。
if strings.HasPrefix(str, "Th") {
fmt.Println("HasPrefix return true!")
}
// 終端文字列を判定する。
if strings.HasSuffix(str, "age") {
fmt.Println("HasSuffix return true!")
}
// 文字列から特定の部分文字列を検索する。
// 先頭から検索して見つかった文字列位置を返す。
// 見つからない場合は -1 を返す。
if idx := strings.Index(str, "Program"); idx != -1 {
fmt.Printf("Found. (index = %d)\n", idx)
}
// 末尾から検索して見つかった文字列位置を返す。
// 見つからない場合は -1 を返す。
if idx := strings.LastIndex(str, "a"); idx != -1 {
fmt.Printf("Found. (index = %d)\n", idx)
}
}
文字列変換系
Go言語で文字列の変換・置換を行う場合、Replace()をよく用います。
package main
import (
"fmt"
"strings"
)
func main() {
src := "The Go Programming Language"
dst := ""
/* ----------------------------------- */
// Replace()は文字列置換を行うための高機能な関数です。
// 文字列置換を行う
dst = strings.Replace(src, " Programming Language", "lang", 1)
fmt.Println(dst) // The Golang
// 文字列を空文字に置換することで、文字列を削除することもできます。
dst = strings.Replace(src, "The ", "", 1)
fmt.Println(dst) // Go Programming Language
// 第四引数は置換する文字数を指定できます。
dst = strings.Replace(src, "a", "A", 2)
fmt.Println(dst) // The Go ProgrAmming LAnguage
// 第四引数に -1 を指定するとすべての一致文字を置換します。
dst = strings.Replace(src, "a", "A", -1)
fmt.Println(dst) // The Go ProgrAmming LAnguAge
/* ----------------------------------- */
// 文字列を大文字に変換する。
dst = strings.ToUpper(src)
fmt.Println(dst)
// 文字列を小文字に変換する。
dst = strings.ToLower(src)
fmt.Println(dst)
}
文字列分割・結合系
文字列の分割にはTrimやSplit、結合にはJoinを用います。
package main
import (
"fmt"
"strings"
)
func main() {
src := "111222333111222333"
dst := ""
/* ----------------------------------- */
// 指定した文字を文字列の先端から取り除く
dst = strings.TrimLeft(src, "12")
fmt.Println(dst) // 333111222333
// 指定した文字を文字列の末尾から取り除く
dst = strings.TrimRight(src, "23")
fmt.Println(dst) // 111222333111
// 指定した文字を文字列の末尾から取り除く
dst = strings.Trim(src, "13")
fmt.Println(dst) // 222333111222
/* ----------------------------------- */
// 文字列をスライスに分割する
splited := strings.Split(src, "222")
for i, s := range splited {
fmt.Printf("index(%d) = %s\n", i, s)
}
// 文字列を結合する
dst = strings.Join(splited, "-")
fmt.Println(dst) // 111-333111-333
}