Golangで文字列を可変個のスペースで分割する方法

スペースを使用して文字列を分割するシナリオがあります。文字列内の分割された部分文字列間のスペースの数は不確かです。スペースは 1 つまたは 2 つ以上あります。このシナリオでは、最も簡単な strings.Split 関数を使用します。ただそれはできないと考えてください。この記事では、いくつかの効果的な方法を紹介します。

string.Fields 関数の使用

strings.Fields 関数は文字列型のパラメータを受け取り、スペースと複数の連続するスペースを使用して文字列を分割し、ニーズを満たす文字列スライスを返します。使用例は次のとおりです。

package main

import (
	"fmt"
	"strings"
)

func main() {
	str := "欢迎来到路多辛的博客 所思所想          很棒"
	s := strings.Fields(str)
	fmt.Println(s)
}

実行して効果を確認します。

$ go run main.go
[欢迎来到路多辛的博客 所思所想 很棒]

str 内の部分文字列は異なる数のスペースで区切られていますが、strings.Fields 関数で処理した後に文字列型のスライスが取得され、文字列が完全に分割されていることがわかります。

正規表現を使用する

まずサンプルコードを見てください。

package main

import (
	"fmt"
	"regexp"
)

func main() {
	str := "欢迎来到路多辛的博客 所思所想          很棒"
	reg := regexp.MustCompile(`\s+`)
	result := reg.Split(str, -1)
	fmt.Println(result)
}

実行して効果を確認します。

$ go run main.go
[欢迎来到路多辛的博客 所思所想 很棒]

前の例と同じデータを取得します。まず、regexp.MustCompile 関数を使用して、1 つ以上のスペースに一致する正規表現を作成します (\s+ は、少なくとも 1 つのスペース文字に一致することを意味します)。次に、reg.Split メソッドを使用して文字列を分割し、2 番目のパラメータ -1 はすべての部分文字列を返すことを意味します。

おすすめ

転載: blog.csdn.net/luduoyuan/article/details/131905787