🌟

Goのstringsパッケージのdocを読んだ

2022/05/30に公開

概要

実務で使いそうなので、何ができるのかのおさらい。
直近使いそうなものだけ抜粋。Rubyと当てはめてみる。
以降は冗長になるので、main.gofmt.Printlnは省略します。
strings.Compare("a", "b")と記述されたものは下記と同義としてお付き合いいただければです。

package main

import (
	"fmt"
	"strings"
)

func main() {
	fmt.Println(strings.Compare("a", "b"))
}

≒の後にあるのはRubyで相当してそうなメソッド。

ref

https://pkg.go.dev/strings

使いそうなメソッド

  • strings.Contains("seafood", "foo")
    第2引数に与えられた文字列が第1引数の中にあるかどうかをboolで返す。
    "seafood".include? "foo"

  • strings.Cut("seafood", "foo")
    返却された、第1: before, 第2: after, 見つかったかどうか: boolで返却される。
    上記であれば、sea、d, trueが返ってくる。
    "seafood".split("foo")

  • strings.EqualFold("Go", "go")
    大文字小文字区別なしで文字列動詞が同じかどうかの判定
    "go" .casecmp? "Go"

  • strings.Index("seafood", "foo")
    与えられた文字列のindexを返却する、上記では3、無ければ-1
    "seafood".index "foo"

  • strings.Join(s, "-")
    配列またはスライスで与えられた文字列を連結する、セパレータも指定可能。ここでは"sea-food"が返却される
    ["sea", "food"].join('-')

  • strings.Replace(" seafood", "sea", "", 1)
    文字列置換。"food seafood"が返却される。全置換したい時はReplaceAll
    'seafood seafood'.sub("sea", "")

  • strings.ToLower("SeaFood")
    小文字に変換。"seafood"が返却。同様にToUpper、ToTitleがある。
    "SeaFood".downcase

  • strings.Trim("¡¡¡seafood!!!", "!¡")
    与えられた文字列を除去する。
    "¡¡¡seafood!!!".delete "!¡"

Discussion