In Golang ist das Teilen einer Zeichenfolge ein häufiger Vorgang. Allerdings kann es manchmal zu Problemen mit der Teilungslogik kommen. Wie kann also die Segmentierungslogik in Golang verbessert werden? In diesem Artikel stellt Ihnen der PHP-Editor Yuzai einige praktische Tipps und Methoden vor, die Ihnen helfen, die Segmentierungslogik in Golang zu optimieren und zu verbessern und Ihren Code effizienter und zuverlässiger zu machen. Lasst uns gemeinsam erkunden!
Betrachten Sie die folgenden Beispiele als mögliche Werte im Index:
values := [5]string{"32.5ms", "32.5 ms", "32.5%", "32.5 %", "none"}
Bitte beachten Sie, dass der ursprüngliche Wert möglicherweise Leerzeichen für die Maßeinheit enthält (32,5 %, 32,5 %, 32,5 %, usw.)
Ich muss den Gleitkommawert und die Maßeinheit (%, ms usw.) vom ursprünglichen Wert trennen. Der folgende Code liefert mir das gewünschte Ergebnis, aber ich möchte wissen, ob es einen gibt Sauberere Möglichkeit, die gleiche Logik auszuführen, möglicherweise sind keine regulären Ausdrücke erforderlich.
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) } } }
Reguläre Ausdrücke scheinen hier gut zu passen. Persönlich würde ich dafür Untergruppen verwenden, etwa so (ich habe auch Ihre Regex bereinigt, die unnötige Syntax hatte und wie eine falsche Schreibweise von [d{2}]*
aussah):
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
Das obige ist der detaillierte Inhalt vonSo verbessern Sie die Segmentierungslogik in Golang. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!