Heim  >  Artikel  >  Backend-Entwicklung  >  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
WBOYnach vorne
2024-02-10 19:54:081137Durchsuche

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",
    }

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.

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" })
}

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:stackoverflow.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen