我是新手,试图找到一个字符串中的字符串索引,但我想传入起始索引.
我知道有strings.Index和strings.LastIndex,但他们只找到第一个和最后一个.有没有我可以使用的功能,我可以在哪里指定起始索引?像我的例子中的最后一行.
例:
s := "go gopher, go"
fmt.Println(strings.Index(s, "go")) // Position 0
fmt.Println(strings.LastIndex(s, "go")) // Postion 11
fmt.Println(strings.Index(s, "go", 1)) // Position 3 - Start looking for "go" begining at index 1
Run Code Online (Sandbox Code Playgroud)
这是一个烦人的疏忽,您必须创建自己的函数。
就像是:
func indexAt(s, sep string, n int) int {
idx := strings.Index(s[n:], sep)
if idx > -1 {
idx += n
}
return idx
}
Run Code Online (Sandbox Code Playgroud)
不,但在字符串切片上应用strings.Index可能更简单
strings.Index(s[1:], "go")+1
strings.Index(s[n:], "go")+n
Run Code Online (Sandbox Code Playgroud)
参见示例(对于未找到字符串的情况,请参阅OneOfOne的答案),但是,正如Dewy Broto 评论的那样,可以使用包含简单语句的' '语句来简单地测试它:(
也称为' '初始化语句)ifif
if i := strings.Index(s[n:], sep) + n; i >= n {
...
}
Run Code Online (Sandbox Code Playgroud)