如何在Golang中找到一个字符索引?

mob*_*obu 26 string character go

我试图在Go中找到"@"字符串字符,但我找不到办法来做到这一点.我知道如何索引像输出"E"的字符"HELLO [1]".但是我试图找到找到的char的索引号.

在Python中我会按以下方式执行:

x = "chars@arefun"
split = x.find("@")
chars = x[:split]
arefun = x[split+1:]

>>>print split
5
>>>print chars
chars
>>>print arefun
arefun
Run Code Online (Sandbox Code Playgroud)

所以chars会返回"chars",而且当使用"@"delimeter时,arefun会返回"arefun".我一直试图找到解决方案几个小时,我似乎无法在Golang找到正确的方法.

sir*_*nga 58

您可以使用包的索引功能strings

游乐场:https://play.golang.org/p/_WaIKDWCec

package main

import "fmt"
import "strings"

func main() {
    x := "chars@arefun"

    i := strings.Index(x, "@")
    fmt.Println("Index: ", i)
    if i > -1 {
        chars := x[:i]
        arefun := x[i+1:]
        fmt.Println(chars)
        fmt.Println(arefun)
    } else {
        fmt.Println("Index not found")
        fmt.Println(x)
    }
}
Run Code Online (Sandbox Code Playgroud)


Xeo*_*oss 7

如果您正在搜索非 ASCII 字符(英语以外的语言),您需要使用http://golang.org/x/text/search

\n
func SubstringIndex(str string, substr string) (int, bool) {\n    m := search.New(language.English, search.IgnoreCase)\n    start, _ := m.IndexString(str, substr)\n    if start == -1 {\n        return start, false\n    }\n    return start, true\n}\n\nindex, found := SubstringIndex(\'Aarhus\', \'\xc3\x85\');\nif found {\n    fmt.Println("match starts at", index);\n}\n
Run Code Online (Sandbox Code Playgroud)\n

language.Tag在此处搜索结构以查找您想要搜索的语言,或者language.Und如果您不确定,则使用该语言。

\n