[code]
package main
import (
"fmt"
"strings"
)
func main() {
fmt.Println(mb_strpos("聚合数据科技公司", "科技")) // 4
fmt.Println(mb_strpos("聚合数据--科技公司", "科技")) // 6
fmt.Println(mb_strpos("juhe聚合数据-科技公司", "数据")) // 6
}
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]
|