java - 提取字符串的属性

标签 java string attributes extract

我必须在这里处理一个由肮脏的设计引起的问题。我得到一个字符串列表,想从中解析属性。不幸的是,我无法更改创建这些字符串的来源。

例子:

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 已停用

这里的问题是字段info,它的文本不受引号限制。此字段中也可能出现逗号,因此我不能在字符串末尾使用逗号来找出结束位置。

此外,这些字符串并不总是包含所有属性。 typeinfodeactivated 始终存在,其余可选。

有什么建议可以解决这个问题吗?

最佳答案

一种可能的解决方案是在输入中搜索 = 字符,然后将其前面的单个单词作为字段名称 - 似乎您所有的字段名称都是单个单词(没有空格) .如果是这种情况,您可以将 = 之后的所有内容作为值,直到下一个字段名称(用于分隔 ,)。

这假定该值不能包含 =

编辑:

作为处理嵌入式 = 的一种可能方法,您可以查看它前面的单词是否是您已知的字段名称 - 如果不是,您可以将 = 作为嵌入字符而不是运算符。然而,这假设您有一组固定的已知字段(其中一些可能不会总是出现)。如果您知道字段名称区分大小写,则可以放宽此假设。

关于java - 提取字符串的属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30631186/

相关文章:

java - Spring Security - 为什么要为用户和角色设置单独的类?

java - Spring Boot 管理员无法从 Eureka 获取注册表

javascript - 比较两个字符串并显示字符串中不匹配单词的数量

python - 如何使用 python 中的循环删除字符串中的空格?

c++ - 如何在 QDomNodeList 中检索属性的值?

nhibernate - 让 NHibernate.Mappings.Attributes 发挥作用

java - Spring 3.1.1 MVC @Cacheable 没有被击中

java - SLF4J 和 Log4j 2 绑定(bind) Maven 依赖

java - 如何拆分逗号分隔的字符串?

python - 对 python 类同时使用 __setattr__ 和描述符