我需要编写一个StringUtils.commaDelimitedListToStringArray函数的扩展版本,它获取一个额外的参数:escape char.
所以打电话给我:
commaDelimitedListToStringArray("test,test\\,test\\,test,test", "\\")
Run Code Online (Sandbox Code Playgroud)
应该返回:
["test", "test,test,test", "test"]
Run Code Online (Sandbox Code Playgroud)
我目前的尝试是使用String.split()使用正则表达式拆分String:
String[] array = str.split("[^\\\\],");
Run Code Online (Sandbox Code Playgroud)
但返回的数组是:
["tes", "test\,test\,tes", "test"]
Run Code Online (Sandbox Code Playgroud)
有任何想法吗?
自从我开始写这个问题以来,我想我已经找到了每个问题的答案,但我认为无论如何我都会发帖,因为它可能对其他人有用,更多的澄清可能会有所帮助.
我试图使用带有javascript函数拆分的前瞻性的正则表达式.由于某种原因,即使在我调用匹配时找到匹配项,它也不会拆分字符串.我原本以为问题来自于我的正则表达式中使用前瞻.这是一个简化的例子:
不起作用:
"aaaaBaaaa".split("(?=B).");
Run Code Online (Sandbox Code Playgroud)
作品:
"aaaaBaaaa".match("(?=B).");
Run Code Online (Sandbox Code Playgroud)
问题似乎是在拆分示例中,传递的字符串未被解释为正则表达式.使用正斜杠而不是引号似乎可以解决问题.
"aaaaBaaaa".split(/(?=B)./);
Run Code Online (Sandbox Code Playgroud)
我用以下愚蠢的例子证实了我的理论:
"aaaaaaaa(?=B).aaaaaaa".split("(?=B).");
Run Code Online (Sandbox Code Playgroud)
有没有其他人认为匹配函数假设你有一个正则表达式,而split函数没有?
可能重复:
如何在js中拆分字符串,但有一些例外
例如,如果字符串是:
abc&def&ghi\&klm&nop
Run Code Online (Sandbox Code Playgroud)
必需的输出是字符串数组
['abc', 'def', 'ghi\&klm', 'nop]
Run Code Online (Sandbox Code Playgroud)
请建议我最简单的解决方案.