除关键字外,按空格分隔

Split by whitespace Except KeyWords

所以我有一个看起来像这样的字符串:

var sentence = "1 is less than 2";

然后我有关键字数组:

var array = ["is less than", "is bigger than"];

现在我想使用空格拆分可变句子但忽略关键字:

var sentenceArray = ["1", "is less than" , "2"];

任何线索我该怎么做?

好的,很抱歉让这个问题看起来像一个懒惰的问题,因此,我制作了一个带有拆分的正则表达式,可用于匹配带有多个定界符的句子。没什么复杂的,但看起来很干净。享受:

var sentence = "1 is less than 2 and 3";
var sentenceArray = [];
sentenceArray = sentence.split(/(\is less than|and)/g);
alert(sentenceArray);

按数字拆分它们

var sentence = "1 is less than 2";
var sentenceArray  = sentence.split(/(\d+)/g).map(function(a){return a.trim()}).filter(function(a){return a;});
document.body.innerHTML = JSON.stringify(sentenceArray);

给你。我认为你对 JS 中数组的理解是错误的。

var sentence = "1 is less than 2";
var array = ["is less than", "is bigger than"];
var result = [];
for (var i = 0; i < array.length; i++) {
    if (sentence.indexOf(array[i]) > -1) {
        result.push(array[i]);
        var splitResults = sentence.split(array[i]);
        for (var j = 0; j < splitResults.length; j++) {
            result.push(splitResults[j]);
        }
    }
}
alert(result);

希望对您有所帮助。

假设您的 array 是字符串数组(我省略了那些花括号),您可以这样做:

var sentence = "1 is less than 2";
var array = ["is less than", "is bigger than"];
var sentenceArray = [];
for(var i in array){
    var s = sentence.split(array[i]);
    if(s[1]){
        sentenceArray.push(s[0].trim());
        sentenceArray.push(array[i]);
        sentenceArray.push(s[1].trim());
        break; // in case there are more than one unique delimiter in the array
    }
}

console.log(sentenceArray);

输出:

 ["1", "is less than", "2"]