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 關注
- 124 瀏覽
添加回答
舉報