如何在字符串中的特定位置找到精确的字符

我有以下字符串:

absoloute-power

正如您所看到的,字符串中的第 10 位置有一个“-”。如何编写 go 代码来验证任何给定字符串的第 10 个位置是否有“-”?


www说
浏览 160回答 3
3回答

慕运维8079593

在 Go 中,字符串字符值是以 UTF-8 编码的 Unicode 字符。UTF-8 是一种可变长度编码,每个字符使用一到四个字节。对于你的例子:package mainimport (    "fmt"    "unicode/utf8")func is10Hyphen(s string) bool {    for n := 1; len(s) > 0; n++ {        r, size := utf8.DecodeRuneInString(s)        if r == utf8.RuneError && (size == 0 || size == 1) {            return false        }        if n == 10 {            return r == '-'        }        s = s[size:]    }    return false}func main() {    s := "absoloute-power"    fmt.Println(is10Hyphen(s))    s = "absoloute+power"    fmt.Println(is10Hyphen(s))    s = "absoloute"    fmt.Println(is10Hyphen(s))}游乐场:https://play.golang.org/p/h9rMQWWAdvb输出:truefalsefalse如果您愿意考虑遇到 Unicode 替换字符错误,那么对于您的示例:func is10Hyphen(s string) bool {    n := 0    for _, r := range s {        if r == utf8.RuneError {            return false        }        n++        if n == 10 {            return r == '-'        }    }    return false}游乐场: https: //play.golang.org/p/SHbPAnldTyw

墨色风雨

您可以使用符文数组:text := "ifthisisyourstring"chars := []rune(text)if chars[0] == '1' {    // is true}

慕沐林林

由于string实际上是一个数组,所以可以直接访问第10个位置。当然,需要避免“超出范围”错误。对于非ascii编码的情况,将其转换为rune数组package mainimport (&nbsp; "fmt")func main() {&nbsp; fmt.Println(Check("213123-dasdas"))&nbsp; fmt.Println(Check("213123sdas"))&nbsp; fmt.Println(Check("213123das-das"))&nbsp; fmt.Println(Check("213123dasda-s"))&nbsp; fmt.Println(Check("---------2----------"))}func Check(ss string) bool {&nbsp; r = []rune(ss)&nbsp; if len(r) < 10 {&nbsp; &nbsp; return false&nbsp; }&nbsp; return ss[r] == '-'}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go