2 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
沒有理由為此使用正則表達(dá)式。正則表達(dá)式對(duì)于這樣一個(gè)簡(jiǎn)單的任務(wù)來說太過分了——它過于復(fù)雜,而且效率較低。相反,您應(yīng)該只使用strings.Index
, 和一個(gè) for 循環(huán):
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貢獻(xiàn)1825條經(jīng)驗(yàn) 獲得超6個(gè)贊
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))
}
游樂場(chǎng):https://play.golang.org/p/nNE5IB1feQT
輸出:
[1 5 10 16 19 22 25]
- 2 回答
- 0 關(guān)注
- 119 瀏覽
添加回答
舉報(bào)