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

在这里,我有一个模拟函数,它采用单个字符串中多个单词的单个参数,例如 等。"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")

    }

}


开满天机
浏览 96回答 2
2回答

梦里花落0921

字符串。SplitN完全符合您的要求。下面是一个小演示:package mainimport (    "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

如果您确定要搜索的是单词而不是正则表达式模式,则可以使用以下方法:exists := strings.Index(str, "content")这将返回 出现的第一个索引,如果未找到,则返回。如果找到匹配项,则可以拆分字符串,直到找到 。content-1index-1以下是操场上的一个示例,可帮助您:https://play.golang.org/p/QT39T6hStul
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go