使用startIndex查找字符串中的索引

时间:2014-09-14 19:15:08

标签: go

我是新手,试图找到在字符串中查找字符串的索引,但我想传入起始索引。

我知道有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

2 个答案:

答案 0 :(得分:5)

不,但在字符串片段

上应用strings.Index可能更简单
strings.Index(s[1:], "go")+1
strings.Index(s[n:], "go")+n

请参阅example(对于未找到字符串的情况,请参阅OneOfOne' s answer),但是,如commented所示Dewy Broto,可以使用'if' statement including a simple statement进行测试: (也称为'if' with an initialization statement

if i := strings.Index(s[n:], sep) + n; i >= n { 
    ...
}

答案 1 :(得分:3)

这是一个烦人的疏忽,你必须创建自己的功能。

类似的东西:

func indexAt(s, sep string, n int) int {
    idx := strings.Index(s[n:], sep)
    if idx > -1 {
        idx += n
    }
    return idx
}