假设我有以下(非标准)格式的文本文件:
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/