Mam więc ciąg, który wygląda tak:
var sentence = "1 is less than 2";
Następnie mam tablicę ze słowami kluczowymi:
var array = ["is less than", "is bigger than"];
teraz chcę podzielić zdanie zmienne za pomocą białych znaków, ale ignorując słowa kluczowe:
var sentenceArray = ["1", "is less than" , "2"];
Wszelkie wskazówki, jak to zrobić?
Ok przykro mi, że wyglądam na leniwegopytanie, dlatego utworzyłem wyrażenie regularne z podziałem, którego można użyć do dopasowania zdania z wieloma ogranicznikami. Nic skomplikowanego, ale wygląda na czyste. Cieszyć się:
var sentence = "1 is less than 2 and 3";
var sentenceArray = [];
sentenceArray = sentence.split(/(is less than|and)/g);
alert(sentenceArray);
Odpowiedzi:
1 dla odpowiedzi № 1Zakładając twoje array
jest tablicą ciągów (pomijam te nawiasy klamrowe), możesz to zrobić w ten sposób:
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);
Wydajność:
["1", "is less than", "2"]
1 dla odpowiedzi nr 2
Tu masz. Myślę, że mylisz się co do tablicy w 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);
Mam nadzieję, że to pomoże.
0 dla odpowiedzi № 3
Podziel je na liczby
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);