日日操夜夜添-日日操影院-日日草夜夜操-日日干干-精品一区二区三区波多野结衣-精品一区二区三区高清免费不卡

公告:魔扣目錄網為廣大站長提供免費收錄網站服務,提交前請做好本站友鏈:【 網站目錄:http://www.ylptlb.cn 】, 免友鏈快審服務(50元/站),

點擊這里在線咨詢客服
新站提交
  • 網站:51998
  • 待審:31
  • 小程序:12
  • 文章:1030137
  • 會員:747

在PHP中,使用Go函數可以將一串用逗號分隔的鍵/值對進行分割。這個函數非常有用,特別是在給定的鍵/值對中可能嵌入逗號的情況下。使用Go函數可以輕松地將鍵/值對分割成獨立的部分,以便進一步處理和使用。無論是處理表單數據,還是解析CSV文件,Go函數都可以幫助我們高效地完成任務。在本文中,我們將詳細介紹如何使用Go函數分割鍵/值對,并提供一些實用的示例供參考。讓我們開始吧!

問題內容

我對 Go 語言相當陌生,正在尋找一種方法將可變長度字符串拆分為一個映射,其中鍵/值對(所有字符串)以逗號分隔,只有字符串的某些變體可能有多個逗號和/或給定鍵/值對中的冒號。例如:

字符串1變體
關鍵字1=值1,關鍵字2=值2,關鍵字3=值3,值4,值5,關鍵字4=值6 …
字符串2變體
關鍵字1=值1,關鍵字2=值2,關鍵字3=值3,值4,值5:值6,值7,值8,關鍵字4=值9 …

其中“…”反映了這樣一個事實:將有一個變量#鍵/值對。我希望最終得到一張這樣的地圖:

map[string]string{
     
            keyword1: "value1",
            keyword2: "value2",
            keyword3: "value3,value4,value5",
            keyword4: "valu6",
    }

登錄后復制

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

登錄后復制

不幸的是,我將從文件中讀取的行格式相當復雜,并且我用于更改傳入數據格式的選項有限。我已經在這方面投入了一段時間,不幸的是我不是正則表達式的向導,所以任何幫助將不勝感激。

解決方法

匹配(全局),而不是拆分,那么您不需要環視:(.*? )=([^=]*)(?:,|$)。在 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" })
}

登錄后復制

分享到:
標簽:csv文件
用戶無頭像

網友整理

注冊時間:

網站:5 個   小程序:0 個  文章:12 篇

  • 51998

    網站

  • 12

    小程序

  • 1030137

    文章

  • 747

    會員

趕快注冊賬號,推廣您的網站吧!
最新入駐小程序

數獨大挑戰2018-06-03

數獨一種數學游戲,玩家需要根據9

答題星2018-06-03

您可以通過答題星輕松地創建試卷

全階人生考試2018-06-03

各種考試題,題庫,初中,高中,大學四六

運動步數有氧達人2018-06-03

記錄運動步數,積累氧氣值。還可偷

每日養生app2018-06-03

每日養生,天天健康

體育訓練成績評定2018-06-03

通用課目體育訓練成績評定