En golang, diviser une chaîne est une opération courante. Cependant, nous pouvons parfois rencontrer des problèmes avec la logique de fractionnement. Alors, comment améliorer la logique de segmentation dans Golang ? Dans cet article, l'éditeur PHP Yuzai vous présentera quelques conseils et méthodes pratiques pour vous aider à optimiser et améliorer la logique de segmentation dans Golang, rendant votre code plus efficace et plus fiable. Explorons ensemble !
Considérez les exemples suivants comme valeurs possibles dans l'index :
values := [5]string{"32.5ms", "32.5 ms", "32.5%", "32.5 %", "none"}
Veuillez noter que la valeur originale peut ou non comporter des espaces pour l'unité de mesure (32,5 %, 32,5 %, 32,5 %, etc.)
Je dois séparer la valeur à virgule flottante et l'unité de mesure (%, ms, etc.) de la valeur d'origine, le code ci-dessous me donne le résultat que je veux, mais je veux savoir s'il y a une façon plus propre de faire la même logique, peut-être pas besoin d'expressions régulières.
package main import ( "fmt" "regexp" "strings" ) func main() { regexFloatNumbers := regexp.MustCompile(`[-]?\d[\d,]*[\.]?[\d{2}]*`) values := [5]string{"32.5ms", "32.5 ms", "32.5%", "32.5 %", "none"} for _, value := range values { if regexFloatNumbers.MatchString(value) { floatValue := regexFloatNumbers.FindString(value) fmt.Printf("ORIGINAL VALUE: %q\n", value) fmt.Printf("UNIT: %q\n", strings.TrimSpace(regexFloatNumbers.Split(value, -1)[1])) fmt.Printf("FLOAT VALUE: %v\n\n", floatValue) } else { fmt.Printf("float value for %v has not being found!", value) } } }
Les expressions régulières semblent bien s'adapter ici. Personnellement, j'utiliserais des sous-groupes pour cela, comme ceci (j'ai également nettoyé votre regex, qui avait une syntaxe inutile et ressemblait à une faute d'orthographe de [d{2}]*
) :
regexFloatNumbers := regexp.MustCompile(`(-?\d[\d,]*\.?\d*) *(.*)`) // ... floatValue := regexFloatNumbers.FindStringSubmatch(value) fmt.Printf("ORIGINAL VALUE: %q\n", value) fmt.Printf("UNIT: %q\n", floatValue[1]) fmt.Printf("FLOAT VALUE: %v\n\n", floatValue[2])
https://www.php.cn/link/8af0c75579a632c9207e51657de43c7c
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!