我需要一个分割条件来分割;
除了IF;是在&amp; lt ou&amp; gt之后。 (< or > are converted in < or >
)
示例:
输入:
A > , < B , < C > ; 100, 119, 150
输出:
A >, < B, < C >
100,119,150
我可以做到:
var myString = "A > , < B , < C > ; 100, 119, 150"
myString.replace(">", "!!!before").replace("<", "!!!after");
myString.split(";");
myString.replace("!!!before", ">").replace("!!!after", "<");
但是对于我的情况,这个解决方案是一个很大的解决方法,我正在使用正则表达式或indexof搜索解决方案来改进它。
答案 0 :(得分:1)
一个简单的解决方案是使用在给定上下文中您不应该期望的占位符。我在下面的例子中使用了unicode零宽度字符:
var arr = "A > , lgt; B , lgt; C > ; 100, 119, 150"
.replace(/>/g, "\u200B")
.replace(/</g, "\u200C")
.split(";");
arr.forEach(function(el, i) {
arr[i] = el.replace(/\u200B/g, ">").replace(/\u200C/g, "<");
});
console.log(arr); //outputs ["A > , lgt", " B , lgt", " C > ", " 100, 119, 150"]
解决您在问题中添加的更新:尽管正则表达式偶尔看起来更短,但它通常会提供更差的性能,例如参见this article on Coding Horror。