如何在Javascript中进行条件拆分?

时间:2015-04-15 18:36:09

标签: javascript

我需要一个分割条件来分割;

除了IF;是在&amp; lt ou&amp; gt之后。 (&lt; or &gt; are converted in < or >

示例:

输入

A &gt; , &lt; B , &lt; C &gt; ; 100, 119, 150

输出

A &gt;, &lt; B, &lt; C &gt;
100,119,150

我可以做到:

var myString =  "A &gt; , &lt; B , &lt; C &gt; ; 100, 119, 150"
myString.replace("&gt;", "!!!before").replace("&lt;", "!!!after");    
myString.split(";");
myString.replace("!!!before", "&gt;").replace("!!!after", "&lt;");    

但是对于我的情况,这个解决方案是一个很大的解决方法,我正在使用正则表达式或indexof搜索解决方案来改进它。

1 个答案:

答案 0 :(得分:1)

一个简单的解决方案是使用在给定上下文中您不应该期望的占位符。我在下面的例子中使用了unicode零宽度字符:

var arr = "A &gt; , lgt; B , lgt; C &gt; ; 100, 119, 150"
    .replace(/&gt;/g, "\u200B")
    .replace(/&lt;/g, "\u200C")
    .split(";");
arr.forEach(function(el, i) {
    arr[i] = el.replace(/\u200B/g, "&gt;").replace(/\u200C/g, "&lt;");
});
console.log(arr); //outputs ["A &gt; , lgt", " B , lgt", " C &gt; ", " 100, 119, 150"]

解决您在问题中添加的更新:尽管正则表达式偶尔看起来更短,但它通常会提供更差的性能,例如参见this article on Coding Horror