在这里,我有一个模拟函数,它采用单个字符串中多个单词的单个参数,例如 等。"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-1index-1
以下是操场上的一个示例,可帮助您:https://play.golang.org/p/QT39T6hStul
- 2 回答
- 0 关注
- 133 浏览
添加回答
举报
0/150
	提交
		取消
	