【发布时间】:2015-06-03 21:35:45
【问题描述】:
我必须在这里处理一个由肮脏设计引起的问题。我得到一个字符串列表并想从中解析属性。不幸的是,我无法更改创建这些字符串的源。
例子:
String s = "type=INFO, languageCode=EN-GB, url=http://www.stackoverflow.com, ref=1, info=Text, that may contain all kind of chars., deactivated=false"
现在我要提取属性type、languageCode、url、ref、info 和deactivated。
这里的问题是字段info,其文本不受引号限制。此字段中也可能出现逗号,因此我不能使用字符串末尾的逗号来找出结束的位置。
另外,这些字符串并不总是包含所有属性。 type、info 和 deactivated 始终存在,其余为可选。
有什么建议可以解决这个问题吗?
【问题讨论】:
-
这些元素的顺序是固定的吗?
-
如何搜索
=,然后选择它前面的单个单词作为字段名称。=之后直到下一个字段名称的所有内容都是值。这假定该值不能包含 '=' - 如果可以,您就没有太多可做的了。 -
如果所有 other 属性都有某种可预测的格式,您可以删除这些属性并将剩余的内容用于
info... -
你觉得使用正则表达式怎么样?
-
@Stan OP 要求任何建议,所以我怀疑这是一个有效的选择。如果您有想法甚至准备好代码,请随时将其发布为答案。
标签: java string attributes extract