情况如下:
var stringExample = "hello=goodbye==hello";
var parts = stringExample.split("=");
输出:
hello,goodbye,,hello
我需要这个输出:
hello,goodbye==hello
必须忽略连续/重复的字符,只需单个"="
即可拆分。
也许是一些正则表达式?
答案 0 :(得分:6)
您可以使用正则表达式:
var parts = stringExample.split(/\b=\b/);
\b
检查字边界。
答案 1 :(得分:3)
最有可能的是,@ dysys回答是你正在寻找的回答。但是,如果除了字母数字(A-Z
,a-z
,0-9
或_
)之外的任何字符都可以围绕“分裂=
”,那么他的解决方案就会胜出'工作。例如,字符串
It's=risqué=to=use =Unicode!=See?
将分成
"It's", "risqué=to", "use Unicode!=See?"
因此,如果您需要避免这种情况,通常会使用lookbehind断言:
result = subject.split(/(?<!=)=(?!=)/); // but that doesn't work in JavaScript!
因此,即使 仅在单个=
上拆分,也无法使用它,因为JavaScript不支持(?<!...)
lookbehind断言。
幸运的是,您始终可以通过匹配分隔符之间允许的所有内容,将split()
操作转换为全局match()
操作:
result = subject.match(/(?:={2,}|[^=])*/g);
会给你
"It's", "risqué", "to", "use ", "Unicode!", "See?"
答案 2 :(得分:-1)
对可能的解决方案的第一个近似可能是:
".*[^=]=[^=].*"
请注意,这只是正则表达式,如果你想将它与egrep,sed,java regex或其他什么一起使用,请注意是否需要转义。
当心!:这是第一次近似,可以改进。请注意,例如,此正则表达式将不匹配此字符串“=”(null - 等于 - null)。