在這里,我有一個模擬函數,它采用單個字符串中多個單詞的單個參數,例如 等。"hello1 hello2 hello3 hello4 hello5 hello6 hello7"該函數將首先執行匹配以查看該單詞是否在它收到的字符串中,然后繼續將字符串拆分為參數。如果沒有匹配,則執行其他操作。contentcontent我的函數正在處理此數據,預期為 5 個參數。dosomething我現在的問題是,我怎么能用分隔符空間來分割它們,但后面的所有內容都應該是下面的一部分。hello5arg5目前我沒有辦法確切地知道有多少個參數將進入,因此連接固定參數將不起作用,它需要是動態的(這是我的假設)。mystring我希望這是有道理的func testing(mystring) { matched, err := regexp.MatchString(`content`, mystring) if err != nil { panic() } if matched { r := regexp.MustCompile("[^\\s]+") arguments := r.FindAllString(clientRequest, -1) arg1 := string(arguments[1]) arg2 := string(arguments[2]) arg3 := string(arguments[3]) arg4 := string(arguments[4]) arg5 := string(arguments[5]) dosomething(arg1, arg2, arg3, arg4, arg5) } else { log.Println("Not matched") }}
2 回答

夢里花落0921
TA貢獻1772條經驗 獲得超6個贊
字符串。SplitN完全符合您的要求。
下面是一個小演示:
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Printf("%q\n", strings.SplitN("a b c d e f g", " ", 5))
}
輸出:
["a" "b" "c" "d" "e f g"]
我還建議添加一個額外的語句來檢查返回正確長度的切片。ifstrings.SplitN

ABOUTYOU
TA貢獻1812條經驗 獲得超5個贊
如果您確定要搜索的是單詞而不是正則表達式模式,則可以使用以下方法:
exists := strings.Index(str, "content")
這將返回 出現的第一個索引,如果未找到,則返回。如果找到匹配項,則可以拆分字符串,直到找到 。content
-1
index-1
以下是操場上的一個示例,可幫助您:https://play.golang.org/p/QT39T6hStul
- 2 回答
- 0 關注
- 117 瀏覽
添加回答
舉報
0/150
提交
取消