You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
gosuv/vendor/github.com/gopherjs/gopherjs/compiler/natives/src/strings/strings.go

48 lines
806 B

// +build js
package strings
import (
"unicode/utf8"
"github.com/gopherjs/gopherjs/js"
)
func IndexByte(s string, c byte) int {
return js.InternalObject(s).Call("indexOf", js.Global.Get("String").Call("fromCharCode", c)).Int()
}
func Index(s, sep string) int {
return js.InternalObject(s).Call("indexOf", js.InternalObject(sep)).Int()
}
func LastIndex(s, sep string) int {
return js.InternalObject(s).Call("lastIndexOf", js.InternalObject(sep)).Int()
}
func Count(s, sep string) int {
n := 0
// special cases
switch {
case len(sep) == 0:
return utf8.RuneCountInString(s) + 1
case len(sep) > len(s):
return 0
case len(sep) == len(s):
if sep == s {
return 1
}
return 0
}
for {
pos := Index(s, sep)
if pos == -1 {
break
}
n++
s = s[pos+len(sep):]
}
return n
}