[code]
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(mb_strpos("聚合科技有限公司", "科技")) // 2
fmt.Println(mb_strpos("聚合科技--有限公司", "公司")) // 8
fmt.Println(mb_strpos("https://www.juhe.cn/ 聚合数据-科技公司", "数据")) // 23
}
func mb_strpos(haystack, needle string) int {
index := strings.Index(haystack, needle)
if index == -1 || index == 0 {
return index
}
pos := 0
total := 0
reader := strings.NewReader(haystack)
for {
_, size, err := reader.ReadRune()
if err != nil {
return -1
}
total += size
pos++
// got it
if total == index {
return pos
}
}
}
[/code]
|