2 回答
TA贡献1864条经验 获得超6个赞
没有理由为此使用正则表达式。正则表达式对于这样一个简单的任务来说太过分了——它过于复杂,而且效率较低。相反,您应该只使用strings.Index
, 和一个 for 循环:
input := "...#...#....#.....#..#..#..#......."
idx := []int{}
j := 0
for {
i := strings.Index(input[j:], "..#..")
if i == -1 {
break
}
fmt.Println(j)
idx = append(idx, j+i)
j += i+1
}
fmt.Println("Indexes:", idx)
TA贡献1825条经验 获得超6个赞
Go是给程序员的。例如,
package main
import (
"fmt"
"strings"
)
func findIndices(haystack, needle string) []int {
var x []int
for i := 0; i < len(haystack)-len(needle); i++ {
j := strings.Index(haystack[i:], needle)
if j < 0 {
break
}
i += j
x = append(x, i)
}
return x
}
func main() {
haystack := `...#...#....#.....#..#..#..#.......`
needle := `..#..`
fmt.Println(findIndices(haystack, needle))
}
游乐场:https://play.golang.org/p/nNE5IB1feQT
输出:
[1 5 10 16 19 22 25]
- 2 回答
- 0 关注
- 93 浏览
添加回答
举报