为了账号安全,请及时绑定邮箱和手机立即绑定

在空格上拆分字符串(但不是全部..?)

在空格上拆分字符串(但不是全部..?)

Go
开满天机 2022-08-15 16:54:14
在这里,我有一个模拟函数,它采用单个字符串中多个单词的单个参数,例如 等。"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


查看完整回答
反对 回复 2022-08-15
?
ABOUTYOU

TA贡献1812条经验 获得超5个赞

如果您确定要搜索的是单词而不是正则表达式模式,则可以使用以下方法:

exists := strings.Index(str, "content")

这将返回 出现的第一个索引,如果未找到,则返回。如果找到匹配项,则可以拆分字符串,直到找到 。content-1index-1

以下是操场上的一个示例,可帮助您:https://play.golang.org/p/QT39T6hStul


查看完整回答
反对 回复 2022-08-15
  • 2 回答
  • 0 关注
  • 95 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信