J'essaie de trouver le caractère de chaîne "@" dans Go, mais je ne trouve pas de moyen de le faire. Je sais comment indexer des caractères comme "BONJOUR [1]" qui produirait "E". Cependant, j'essaie de trouver le numéro d'index du caractère 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
Les caractères renverraient donc "chars" et arefun renverrait "arefun" lors de l'utilisation du délimiteur "@". Cela fait des heures que j'essaie de trouver une solution et je n'arrive pas à trouver le moyen approprié de le faire à Golang.
Vous pouvez utiliser la fonction Index du package 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)
}
}
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);
}
Cherche le language.Tag
structs here pour trouver la langue que vous souhaitez rechercher ou utiliser language.Und
si vous n'êtes pas sûr.