在这里,我有一个模拟函数,它采用单个字符串中多个单词的单个参数,例如 等。"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 关注
- 95 浏览
添加回答
举报
0/150
提交
取消