拆分逗号分隔的字符串(带有一些 ' \ [ 字符)

Posted

技术标签:

【中文标题】拆分逗号分隔的字符串(带有一些 \' \\ [ 字符)【英文标题】:Splitting comma separated string (with some of ' \ [ chars)拆分逗号分隔的字符串(带有一些 ' \ [ 字符) 【发布时间】:2012-04-02 09:50:07 【问题描述】:

已经解决了我的问题 - 可以删除帖子。谢谢大家的帮助。

我需要一些关于在 Java 中拆分字符串的帮助。我有一个这样的字符串:

'key'=>value1,'key2'=>'value2','key3'=>'innerKey1'=>'innerValue1'... ...

我需要拆分它,这样我就有了 HashMap:

    键->值1 key2->value2 key3->(内部 HashMap 已解析 'innerKey1'=>'innerValue1'...) ...

当我尝试从 key3 解析值时,它应该会以同样的方式再次拆分它。内部元素可能有许多层次。我还需要它在键和值部分使用特殊字符,如 ' 或 \。我用过这样的东西:

result = string.split( ",(?=([^\"]*\"[^\"]*\")*(?![^\"]*\"))" );

但我不知道如何将整个 ... 视为值而不是用逗号分隔。

我正在考虑为此使用 JSON,但也许有人知道一些比 JSON 库更快的正则表达式或小函数。

【问题讨论】:

您正在制作自己的序列化,这是一个坏主意。如果您有一些遥远的可能性将该字符串修复为 JSON(或其他一些序列化格式),请这样做。学习 JSON 只不过是调用编码/解码函数。您将无法使用正则表达式轻松解析这样的结构。 我知道,但是遗留代码,你别无选择 【参考方案1】:

您尝试解析的字符串肯定是 JSON。并且 IMO,与其重新发明自己的 JSON 解析库,不如考虑使用:

1) Jackson

2) google-gson

我个人更喜欢 Jackson,因为它很简单。

【讨论】:

【参考方案2】:

您应该考虑使用解析器

split 很简单,在特殊情况下会失败。

解析器能够生成全面的错误消息。 分裂你很快很迷茫

【讨论】:

以上是关于拆分逗号分隔的字符串(带有一些 ' \ [ 字符)的主要内容,如果未能解决你的问题,请参考以下文章

在Oracle中将连字符分隔的字符串拆分为行

带有逗号分隔符的数字的正则表达式验证

将逗号分隔的字符串拆分为数组?

如何在存储过程中拆分逗号分隔的字符串?

SQL拆分逗号分隔的字符串

SQL拆分逗号分隔的字符串