【问题标题】:Convert String to Map将字符串转换为地图
【发布时间】:2013-07-17 04:46:31
【问题描述】:
def val = "[name: searchBaseDN value: , name: enable value: false, name: userDn value:  
cn=EAGREAD,ou=Users,ou=Administration,o=hyn, name: base value:  , name: prefsize value: 1,   
name: timeBetweenEvictionRuns value: 300000]"

我想把它转换成 hashmap val[name:value]

感谢您的帮助。

【问题讨论】:

  • 是数组还是字符串?如果它是代码所示的字符串,那么您将需要解析并提取该信息

标签: groovy


【解决方案1】:

这看起来很有希望:

matches = val =~ /name:\s+(.*?)\s+value:\s+(.*?)(,\s+|\s+|])/

def newVal = [:]
matches.each { m ->
    newVal[m[1]] = m[2]
}

但如果字符串稍有改变,正则表达式可能会中断...

【讨论】:

  • 你也可以使用注入:def newVal = matches.inject( [:] ) { m, match -> m << [ (match[1]): match[2] ] }
  • 如果 val = "[ name: urls value: lp://23.165.3.215:383, lp://23.165.3.216:383, name: searchBaseDN value: ,] 我需要什么改变在模式中做。结果只有一个 url 显示。[urls lp://23.165.3.215:383]
  • @tim_yates 甚至def newVal = matches.collect { it[1, 2] }.collectEntries() =D
猜你喜欢
  • 2021-02-18
  • 2013-11-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-01-09
  • 2023-04-06
  • 2018-06-17
相关资源
最近更新 更多