【发布时间】:2017-12-06 02:33:57
【问题描述】:
我正在从一些旧硬件解析一个文本文件,我需要从一个长字符串中提取一组字符串。
- 元素以逗号分隔
- 每个单独的字符串都用单引号括起来
'你好','世界'
{"'Hello', "'World'"}
出于任何其他原因的单引号是非法的,并且没有等效的转义字符;你不能写“Bob's”这个词,也不能写“Bob\'s”之类的东西。
通常可以很容易地通过逗号分割来获取单个元素:
string testString = "'Hello', 'World'";
ArrayList result = new ArrayList(testString.Split(',');
但我不能这样做;如果逗号在单引号之间,则它是 text,而不是分隔符。
这是一个元素:
“你好,世界”
{"'Hello, World'"}
如何提取元素以检查逗号是否在单引号之间?
'你好','世界','你好,世界'
{"'Hello'", "'World'", "'Hello, World'"}
更多细节:我无法保证元素之间的空白数量:
“你好”、 “世界”、“你好,世界”
附:这是我问 Swift 的同一个问题:Swift: Split comma-separated strings, but not if comma enclosed in single quotes
【问题讨论】:
-
您考虑过使用正则表达式吗?
-
谢谢。是的,我只是不擅长。
-
改为使用
'''分割它,然后你得到的标记将在'' 包围的文本和中间的分隔符之间交替(由逗号和空格组成) -
@MH175,只是做过滤,实际的标记将在交替索引,从 1 开始我相信因为第 0 个位置应该是第一个 ' 之前的无关文本。
-
@MH175,我刚刚阅读了您的 Swift 链接中的问题,这个想法与他的想法相似,您通过单引号进行标记,然后删除标记由单个逗号和空格组成。