将特定格式的字符串转换为 map[string]string

Convert specific formatted string to map[string]string

我有一些上游数据管道,我有如下值的字符串类型变量

map[admin_username:deploy image_name:rhel_lvm84-gen2 vm_size:Standard_DS4_v2]

如何将其转换为映射[string]字符串并获取特定键的值。

这是一个简单的解析字符串的事情。使用 strings.Split() 在这里很有用。

func main() {
    ret := make(map[string]string)
    s := "map[admin_username:deploy image_name:rhel_lvm84-gen2 vm_size:Standard_DS4_v2]"
    rawMap := s[strings.Index(s, "map[")+4:strings.LastIndex(s,"]")]
    pairs := strings.Split(rawMap, " ")
    for _, pair := range pairs {
        kvp := strings.SplitN(pair, ":", 2)
        if len(kvp) != 2 {
            fmt.Printf("Bad key-value pair, ignoring...")
            continue
        }
        ret[kvp[0]] = kvp[1]
    }
    fmt.Printf("Here is the result len=%d :%+v", len(ret), ret)
}

输出:

Here is the result len=3 :map[admin_username:deploy image_name:rhel_lvm84-gen2 vm_size:Standard_DS4_v2]