「Golangのstringsパッケージ：これだけは知っておきたいメソッド17選」

## Contains

**文字列検索**

**strings.Contains(s, substr string) bool**: このメソッドは、与えられた部分文字列 'substr' が文字列 's' に含まれているかどうかをチェックするために使用されます。部分文字列が見つかった場合は、trueを返します。そうでない場合は、falseを返します。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var str = "hello world"
    var substr = "world"
    var result = strings.Contains(str, substr)
    fmt.Println(result) // true
}

```

## Index

**文字列検索**

**strings.Index(s, substr string) int**: このメソッドは、文字列 's' の最初の出現箇所の開始インデックスを検索するために使用されます。部分文字列が見つからない場合は、-1を返します。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var str = "hello world"
    var substr = "world"
    var result = strings.Index(str, substr)
    fmt.Println(result) // 6
}

```

## ToLower

**小文字変換**

**strings.ToLower(s string) string**: このメソッドは、文字列 's' のすべての文字を小文字に変換するために使用されます。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var str = "HeLLo WoRLd"
    var result = strings.ToLower(str)
    fmt.Println(result) // "hello world"
}

```

## ToUpper

**大文字変換**

**strings.ToUpper(s string) string**: このメソッドは、文字列 's' のすべての文字を大文字に変換するために使用されます。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var str = "HeLLo WoRLd"
    var result = strings.ToUpper(str)
    fmt.Println(result) // "HELLO WORLD"
}

```

## Split

**文字列分割**

**strings.Split(s, sep string) []string**: このメソッドは、区切り文字 'sep' を使用して文字列 's' をサブ文字列に分割し、文字列のスライスを返します。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var str = "apple,banana,orange"
    var sep = ","
    var result = strings.Split(str, sep)
    fmt.Println(result) // ["apple", "banana", "orange"]
}

```

### SplitAfter

**文字列分割**

**strings.SplitAfter(s, sep string) []string**: このメソッドは、区切り文字 'sep' を使用して文字列 's' をサブ文字列に分割し、文字列のスライスを返します。ただし、このメソッドは、区切り文字をサブ文字列の末尾に含める点で `Split` メソッドと異なります。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var str = "apple,banana,orange"
    var sep = ","
    var result = strings.SplitAfter(str, sep)
    fmt.Println(result) // ["apple,", "banana,", "orange"]
}

```

### SplitN

**文字列分割**

**strings.SplitN(s, sep string, n int) []string**: このメソッドは、区切り文字 'sep' を使用して文字列 's' をサブ文字列に分割しますが、 'n' を指定することで、分割する最大回数を指定できます。指定した分割回数に達した場合、残りの部分文字列は区切り文字を含んで返されます。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var str = "apple,banana,orange,peach,mango"
    var sep = ","
    var n = 3
    var result = strings.SplitN(str, sep, n)
    fmt.Println(result) // ["apple", "banana", "orange,peach,mango"]
}

```

### SplitAfterN

**文字列分割**

**strings.SplitAfterN(s, sep string, n int) []string**: このメソッドは、区切り文字 'sep' を使用して文字列 's' をサブ文字列に分割しますが、 'n' を指定することで、分割する最大回数を指定できます。指定した分割回数に達した場合、残りの部分文字列は区切り文字を含んで返されます。なお、このメソッドは、区切り文字をサブ文字列の末尾に含める点で Split メソッドと異なります。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var str = "apple,banana,orange,peach,mango"
    var sep = ","
    var n = 3
    var result = strings.SplitAfterN(str, sep, n)
    fmt.Println(result) // ["apple,", "banana,", "orange,peach,mango"]
}

```

## Join

**文字列結合**

**strings.Join(a []string, sep string) string**: このメソッドは、文字列のスライス 'a' の要素を区切り文字 'sep' で連結し、単一の文字列にします。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var arr = []string{"apple", "banana", "orange"}
    var sep = ","
    var result = strings.Join(arr, sep)
    fmt.Println(result) // "apple,banana,orange"
}

```

## Replace

**文字列の置換**

**strings.Replace(s, old, new string, n int) string**: このメソッドは、文字列 's' 中の部分文字列 'old' の最初の 'n' 個の出現箇所を新しい部分文字列 'new' で置き換えます。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var str = "hello world world world"
    var oldStr = "world"
    var newStr = "golang"
    var n = 2
		// n=-1にすると全て置換する
    var result = strings.Replace(str, oldStr, newStr, n)
    fmt.Println(result) // "hello golang golang world"
}

```

## HasPrefix

**接頭辞検索**

**strings.HasPrefix(s, prefix string) bool**: このメソッドは、文字列 's' が指定された接頭辞 'prefix' で始まるかどうかをチェックするために使用されます。接頭辞が見つかった場合は、trueを返します。そうでない場合は、falseを返します。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var str = "hello world"
    var prefix = "hello"
    var result = strings.HasPrefix(str, prefix)
    fmt.Println(result) // true
}

```

## HasSuffix

**接尾辞検索**

**strings.HasSuffix(s, suffix string) bool**: このメソッドは、文字列 's' が指定された接尾辞 'suffix' で終わるかどうかをチェックするために使用されます。接尾辞が見つかった場合は、trueを返します。そうでない場合は、falseを返します。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var str = "hello world"
    var suffix = "world"
    var result = strings.HasSuffix(str, suffix)
    fmt.Println(result) // true
}

```

## TrimSpace

**文字列の前後トリム**

**strings.TrimSpace(s string) string**: このメソッドは、文字列 's' の先頭と末尾の空白文字をすべて削除するために使用されます。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var str = "   hello world   "
    var result = strings.TrimSpace(str)
    fmt.Println(result) // "hello world"
}

```

### TrimLeft

**文字列の先頭トリム**

**strings.TrimLeft(s string, cutset string) string**: このメソッドは、文字列 's' の先頭にある 'cutset' に含まれる文字をすべて削除します。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var str = "###hello world###"
    var cutset = "#"
    var result = strings.TrimLeft(str, cutset)
    fmt.Println(result) // "hello world###"
}

```

### TrimRight

**文字列の末尾トリム**

**strings.TrimRight(s string, cutset string) string**: このメソッドは、文字列 's' の末尾にある 'cutset' に含まれる文字をすべて削除します。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var str = "###hello world###"
    var cutset = "#"
    var result = strings.TrimRight(str, cutset)
    fmt.Println(result) // "###hello world"
}

```

## Repeat

**文字列の繰り返し**

**strings.Repeat(s string, count int) string**: このメソッドは、文字列 's' を 'count' 回繰り返すために使用されます。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var str = "Hello"
    var count = 3
    var result = strings.Repeat(str, count)
    fmt.Println(result) // "HelloHelloHello"
}

```

## Fields

**文字列分割**

**strings.Fields(s string) []string**: このメソッドは、文字列 's' を空白文字で分割し、部分文字列のスライスを返します。

```go
package main

import (
    "fmt"
    "strings"
)

func main() {
    var str = "apple banana orange"
    var result = strings.Fields(str)
    fmt.Println(result) // ["apple", "banana", "orange"]
}

```