29

私は Go を初めて使いましたが、これまでのところ Go を楽しんでいます。文字列の代わりに正規表現を使用して文字列を分割する良い方法を見つけようとしています。ありがとう

http://nsf.github.com/go/strings.html?f:分割!

4

6 に答える 6

18

java、c#、php ...での正規表現分割関数の動作に基づいて正規表現分割関数を作成しました。これは、インデックス情報なしで文字列の配列のみを返します。

func RegSplit(text string, delimeter string) []string {
    reg := regexp.MustCompile(delimeter)
    indexes := reg.FindAllStringIndex(text, -1)
    laststart := 0
    result := make([]string, len(indexes) + 1)
    for i, element := range indexes {
            result[i] = text[laststart:element[0]]
            laststart = element[1]
    }
    result[len(indexes)] = text[laststart:len(text)]
    return result
}

例:

fmt.Println(RegSplit("a1b22c333d", "[0-9]+"))

結果:

[a b c d]
于 2013-02-08T03:10:29.940 に答える
14

特定の文字で分割したいだけの場合は、を使用できますstrings.FieldsFunc。それ以外の場合は、を使用しregexp.FindAllStringます。

于 2011-02-25T17:51:35.433 に答える
2

RegExp.FindAllString の結果をループし、間にある部分文字列を新しい配列に配置する独自の分割関数を作成できるはずです。

http://nsf.github.com/go/regexp.html?m:Regexp.FindAllString !

于 2010-12-16T23:08:05.720 に答える