Heim > Backend-Entwicklung > Golang > Los: Teilen Sie eine Zeichenfolge durch Kommas getrennter Schlüssel/Wert-Paare auf. Kommas können in ein bestimmtes Schlüssel/Wert-Paar eingebettet werden.

Los: Teilen Sie eine Zeichenfolge durch Kommas getrennter Schlüssel/Wert-Paare auf. Kommas können in ein bestimmtes Schlüssel/Wert-Paar eingebettet werden.

WBOY
Freigeben: 2024-02-10 19:54:08
nach vorne
1236 Leute haben es durchsucht

Los: Teilen Sie eine Zeichenfolge durch Kommas getrennter Schlüssel/Wert-Paare auf. Kommas können in ein bestimmtes Schlüssel/Wert-Paar eingebettet werden.

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!

Frageninhalt

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",
    }
Nach dem Login kopieren

oder

map[string]string{
     
            keyword1: "value1",
            keyword2: "value2",
            keyword3: "value3,value4,value5:value6,value7,value8",
            keyword4: "valu6",
    }
Nach dem Login kopieren

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.

Workaround

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" })
}
Nach dem Login kopieren

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!

Verwandte Etiketten:
Quelle:stackoverflow.com
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage