我對Go非常陌生,至今一直享受它。我試圖找到一種很好的方法來使用正則表達式而不是字符串來分割字符串。謝謝在Go中使用正則表達式分割字符串
http://nsf.github.com/go/strings.html?f:Split!
我對Go非常陌生,至今一直享受它。我試圖找到一種很好的方法來使用正則表達式而不是字符串來分割字符串。謝謝在Go中使用正則表達式分割字符串
http://nsf.github.com/go/strings.html?f:Split!
如果你只是想分割某些字符,你可以使用strings.FieldsFunc
,否則我會用regexp.FindAllString
去。
您應該可以創建自己的拆分函數,循環遍歷RegExp.FindAllString的結果,將干預子串放置到新數組中。
http://nsf.github.com/go/regexp.html?m:Regexp.FindAllString!
不確定從哪裏得到了'RegExp',但正確的包名是'regexp'。 Go區分大小寫! – 2011-02-25 17:52:56
我根據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]
的regexp.Split()功能會做到這一點的最好辦法。
看起來像[在Go 1.1中添加](https://golang.org/doc/go1.1)([2013年5月](https://golang.org/doc/devel/release.html#go1)。 1))。 – n8henrie 2017-07-15 15:17:07
我試過這個,但它覆蓋了我想分割的字符。我不想失去角色,只需插入空格。我使用了for循環來達到我的目標。謝謝。 PS - 你的回答不包括正則表達式,也許這就是爲什麼有一個投票? – Brenden 2013-11-15 09:45:40
沒有什麼會被「覆蓋」,這只是返回的問題。如果你喜歡,你總是可以使用不同的正則表達式函數來獲取索引並使用它們。 – 2014-01-24 23:33:37