我想在字符串

时间:2016-06-09 18:59:40

标签: javascript string split

我目前正在开发一个项目,它允许我引入一个字符串,该字符串将具有我将抓取的指定标记,获取指定值并删除标记并推送到数组。我有以下条件,我在JavaScript中使用拆分但它没有拆分指定的结束标记。

这是开始字符串

"~~/Document Heading 1~~<div>This is a test &lt;b&gt;JUDO&lt;/b&gt; TKD</div>~~end~~<div class="/Document Heading 1">This is a test &lt;b&gt;JUDO&lt;/b&gt; TKD</div>"

当前代码阻止

 var segmentedStyles = [];
 var contentToInsert = selectedContent.toString();
 var indexValue = selectedContent.toString().search("~~");

 if (indexValue <= 0) {                            
                        var insertionStyle = contentToInsert.split("~~");
                        segmentedStyles.push(insertionStyle);                                                             
                    }

指定的标记用“~~ .... ~~”括起来。在这个代码块中,它正在通过条件,但字符串没有正确分割。我目前正在将Follow字符串推送到我的数组。

这是我目前的结果

[,/Document Heading 1<div>This is a test &lt;b&gt;JUDO&lt;/b&gt; TKD</div>end,

<div class="/Document Heading 1">This is a test &lt;b&gt;JUDO&lt;/b&gt; TKD</div>]

我的目标

如果存在令牌,我想分割一个字符串。例如我想从~~ .....〜〜开始~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~该数组应该包含两个值,如下所示

   segmentedStyles = [<div>This is a test &lt;b&gt;JUDO&lt;/b&gt; TKD</div>],[<div class="/Document Heading 1">This is a test &lt;b&gt;JUDO&lt;/b&gt; TKD</div>]

3 个答案:

答案 0 :(得分:0)

假设字符串始终以~~/开头,您可以使用以下正则表达式获取所需的数组

~~([^\/].*)~~end~~(.*)

https://regex101.com/r/hJ0vM4/1

答案 1 :(得分:0)

您可以使用正则表达式来匹配部件。

&#13;
&#13;
var string = '~~/Document Heading 1~~<div>This is a test &lt;b&gt;JUDO&lt;/b&gt; TKD</div>~~end~~<div class="/Document Heading 1">This is a test &lt;b&gt;JUDO&lt;/b&gt; TKD</div>',
array = string.split('~~').filter(function (_, i) { 
    return i && !(i % 2); // just get element 2 and 4 or all other even indices
});

console.log(array);
&#13;
&#13;
&#13;

答案 2 :(得分:0)

老实说,我不太明白你想要完成什么哈哈,但我有点理解你想要做的事情:)

首先,只是想弄清楚一些东西。如果你split()使用/~~/作为正则表达式进行拆分,你将获得数组中“~~”所包围的所有位,就像你一样。

其次,如果您将令牌更改为~~START~~~~END~~(永不改变的令牌),您只需执行string.split(/~~(START|END)~~/)即可完成您想要的任务 - 更短更快;)< / p>

第三个字符串始终采用~~<something>~~THE STUFF YOU WANT~~end~~MORE STUFF YOU WANT格式?如果是的话,我建议这样做:

function splitTheTokens(str) {
    var result = [];
    var parts = str.split(/~~end~~/);

    for (var i = 0; i < parts.length; i++) {
        if (!parts[i]) { continue; } // Skips blanks
        if (parts[i].indexOf("~~") == 0) {
            // In case you want to do something with the name thing:
            var thisPartName = parts[i].substring(2, parts[i].indexOf("~~", 2));

            // What (I think) you actually want
            var thisPartValue = parts[i].substring(thisPartName.length + 4);

            result.push(thisPartValue);
        }
        else {
            result.push(parts[i]);
        }
    }

    return result;
}

希望这会有所帮助:D