假设我有以下(非标准)格式的文本文件:

xxx {a = v1; b = v2}
yyy {a = v3; c = v4}


我无法将其更改为任何标准(INI / XML / YAML等)格式。

现在,我想在a部分(即xxx)中找到属性v1的值。在Java / Groovy中最简单的方法是什么?

最佳答案

使用Groovy,您可以利用ConfigSlurper。

但是,您首先需要将有效值映射在一起,以免试图找出v1, v2, v3, etc是什么:

这似乎可行:

def input = '''xxx { a = v1; b = v2 }
              |yyy { a = v3; c = v4 }'''.stripMargin()

def slurper = new ConfigSlurper()

// Find all words 'w' and make a map of [ w1:'w1', w2:'w2', ... ]
slurper.binding = ( ( input =~ /\w+/ ) as List ).collectEntries { w -> [ (w):w ] }

def result = slurper.parse( input )
println result


打印出来:

[xxx:[a:v1, b:v2], yyy:[a:v3, c:v4]]


(Groovy 1.8.4)

关于java - 如何解析类似INI/JSON的非标准格式的文件?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8897471/

10-09 01:36