【发布时间】:2010-04-26 12:00:32
【问题描述】:
我正在解析纯文本并将其转换为键值对。 比如纯文本:
some_uninteresting_thing
key1 valueA, some_uninteresting_thing valueB
key2 valueD
key3 some_uninteresting_thing valueE
key4 valueG(valueH, valueI)
key5 some_uninteresting_thing
以及可能的映射:
Map(
key1 ->(valueA, valueB,valueC),
key2 ->(valueD, valueE),
key3 ->(valueF)
key4 ->(valueH, valueI)
...
)
Amd 结果将是:
key1 ->(valueA, valueB)
key2 ->(valueD)
key4 ->(valueH, valueI)
(key5 不应该被映射,因为它没有合适的值。正如你所看到的,纯文本是宽松的。什么 java 库可以帮助处理这个问题?
【问题讨论】:
-
应该像 'key1 valueA, valueB, valueC' 这样的行映射到 1 个键/值对 ('key1' => 'valueA, valueB, valueC') 或 3 个键/值对 ('key1 ' => 'valueA' 和 'key1' => 'valueB 和 'key1' => 'valueC')?
-
您的代码应该如何处理示例的第一行?
some_uninteresting_thing是没有值的键,还是什么?在处理最后一行时应该如何考虑这一点? -
如何区分“无趣”文本和“有趣文本”。例如,如果第一行是“it's life, Jim”,是无趣还是 key="it's", valueA="life", valueB="Jim" ?
-
@Eric Eijkelenboom 没关系,两种情况我都能应付
-
@Carl Smotricz 什么都不应该被映射,解析器继续解析输入