创建一个支持字符串的番石榴分割器
|
我想为Java创建一个Guava Splitter,可以将Java字符串作为一个块来处理。例如,我希望以下断言为真:
@Test
public void testSplitter() {
String toSplit = \"a,b,\\\"c,d\\\\\\\"\\\",e\";
List<String> expected = ImmutableList.of(\"a\", \"b\", \"c,d\\\"\",\"e\");
Splitter splitter = Splitter.onPattern(...);
List<String> actual = ImmutableList.copyOf(splitter.split(toSplit));
assertEquals(expected, actual);
}
我可以编写正则表达式来查找所有元素,并且不考虑\',\',但找不到用于分隔符的正则表达式。
如果不可能,请这样说,然后从findAll正则表达式构建列表。
没有找到相关结果
已邀请:
5 个回复
喷乡顾沥沪
疏腔傻小雹
习让休堂溯
扇献隙
与
标志看起来(比较友好):
但是即使在此注释版本中,它仍然是一个怪物。用简单的英语来说,此正则表达式可以解释如下: 匹配一个可选用空格字符包围的逗号,仅当向前看该逗号(一直到字符串末尾!)时,引号为零或偶数,而忽略转义的引号或反斜杠。 因此,看到这种情况之后,您可能会同意ColinD(我同意!),在这种情况下,使用某种CSV解析器是可行的。 请注意,上面的正则表达式将在标记周围留下qoutes,即字符串
(作为字面量:
)将被拆分为以下内容:
了驳
然后,
注意线程安全性(或者为了简化-没有任何安全性)