Comment trouver un index de caractères en Golang?

j'essaie de trouver le caractère "@" dans Go mais je ne peux pas trouver un moyen de le faire. Je sais comment indexer des caractères comme " HELLO[1] "qui produirait"E". Cependant, j'essaie de trouver le numéro d'index de l'omble trouvé.

en Python je le ferais de la manière suivante:

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

>>>print split
5
>>>print chars
chars
>>>print arefun
arefun

ainsi, les chars retourneraient les " chars "et les arefun retourneraient les" arefun "en utilisant le delimètre"@". J'ai essayé de trouver une solution pendant des heures et je ne semble pas trouver la bonne façon de le faire en Golang.

18
demandé sur 030 2013-12-29 20:26:09

2 réponses

Vous pouvez utiliser le Index fonction du paquet strings

aire de jeux: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)
    }
}
36
répondu siritinga 2017-04-12 19:33:39

si vous recherchez des caractères non ASCII (langues autres que l'anglais), vous devez utiliser http://golang.org/x/text/search.

func SubstringIndex(str string, substr string) int, bool {
    m := search.New(language.English, search.IgnoreCase)
    start, _ := m.IndexString(str, substr)
    if start == -1 {
        return start, false
    }
    return start, true
}

index, found := SearchForStringIndex('Aarhus', 'Å');
if found {
    fmt.Println("match starts at", index);
}

Recherche language.Tag struct ici pour trouver la langue que vous souhaitez rechercher avec ou utiliser language.Und si vous n'êtes pas sûr.

1
répondu Xeoncross 2017-02-23 15:50:33