In PHP können Sie die Go-Funktion verwenden, um eine Zeichenfolge aus durch Kommas getrennten Schlüssel/Wert-Paaren aufzuteilen. Diese Funktion ist sehr nützlich, insbesondere wenn in einem bestimmten Schlüssel/Wert-Paar möglicherweise eingebettete Kommas vorhanden sind. Go-Funktionen erleichtern die Aufteilung von Schlüssel/Wert-Paaren in unabhängige Teile zur weiteren Verarbeitung und Verwendung. Ganz gleich, ob Sie Formulardaten verarbeiten oder CSV-Dateien analysieren: Go-Funktionen können uns dabei helfen, die Aufgabe effizient zu erledigen. In diesem Artikel erklären wir detailliert, wie Schlüssel/Wert-Paare mithilfe von Go-Funktionen aufgeteilt werden, und stellen einige praktische Beispiele als Referenz bereit. Lasst uns beginnen!
Ich bin ziemlich neu in der Go-Sprache und suche nach einer Möglichkeit, eine Zeichenfolge variabler Länge in eine Karte aufzuteilen, in der die Schlüssel/Wert-Paare (alle Zeichenfolgen) durch Kommas getrennt sind und nur einige der Zeichenfolgenvarianten möglich sind haben mehrere Kommas und/oder Doppelpunkte in einem bestimmten Schlüssel/Wert-Paar. Zum Beispiel:
String 1 Variante Schlüsselwort1=Wert1, Schlüsselwort2=Wert2, Schlüsselwort3=Wert3, Wert4, Wert5, Schlüsselwort4=Wert6 ... String 2 Variante Schlüsselwort 1 = Wert 1, Schlüsselwort 2 = Wert 2, Schlüsselwort 3 = Wert 3, Wert 4, Wert 5: Wert 6, Wert 7, Wert 8, Schlüsselwort 4 = Wert 9...
wobei „…“ die Tatsache widerspiegelt, dass es ein Schlüssel/Wert-Paar der Variablen # geben wird. Ich hoffe, am Ende eine Karte wie diese zu erhalten:
map[string]string{ keyword1: "value1", keyword2: "value2", keyword3: "value3,value4,value5", keyword4: "valu6", }
oder
map[string]string{ keyword1: "value1", keyword2: "value2", keyword3: "value3,value4,value5:value6,value7,value8", keyword4: "valu6", }
Leider ist das Format der Zeilen, die ich aus der Datei lesen werde, ziemlich komplex und meine Möglichkeiten, das Format der eingehenden Daten zu ändern, sind begrenzt. Ich arbeite schon eine Weile daran, leider bin ich kein Experte für reguläre Ausdrücke, daher wäre ich für jede Hilfe sehr dankbar.
Match (global) statt Split, dann brauchen Sie sich nicht umzusehen: (.*? )=([^=]*)(?:,|$)
. In Go:
package kvparse import ( "regexp" "testing" "reflect" ) var kvPairRe = regexp.MustCompile(`(.*?)=([^=]*)(?:,|$)`) func ParseKV(kvStr string) map[string]string { res := map[string]string{} for _, kv := range kvPairRe.FindAllStringSubmatch(kvStr, -1) { res[kv[1]] = kv[2] } return res } func TestParseKV(t *testing.T) { test := func(kvStr string, expectedMap map[string]string) { gotMap := ParseKV(kvStr) if !reflect.DeepEqual(expectedMap, gotMap) { t.Errorf("Abs(%s) = %v; want %v", kvStr, gotMap, expectedMap) } } test("keyword1=value1,keyword2=value2,keyword3=value3,value4,value5,keyword4=value6", map[string]string{ "keyword1": "value1", "keyword2": "value2", "keyword3": "value3,value4,value5", "keyword4": "value6" }) test("keyword1=value1,keyword2=value2,keyword3=value3,value4,value5:value6,value7,value8,keyword4=value9", map[string]string{ "keyword1": "value1", "keyword2": "value2", "keyword3": "value3,value4,value5:value6,value7,value8", "keyword4": "value9" }) }
Das obige ist der detaillierte Inhalt vonLos: Teilen Sie eine Zeichenfolge durch Kommas getrennter Schlüssel/Wert-Paare auf. Kommas können in ein bestimmtes Schlüssel/Wert-Paar eingebettet werden.. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!