Je dois diviser une phrase, mais uniquement par un premier accord. Par exemple:

"hello my dear hello blah blah".split('ello')

Résultat attendu:

["h", "o my dear hello blah blah"]

-4
gizmo 20 nov. 2018 à 15:23

3 réponses

Meilleure réponse

Vous pouvez faire correspondre ell avec une recherche non gourmande et ne prendre que les groupes à gauche et à droite.

String#split fait ne fonctionne pas ici, car il fonctionne globalement pour la chaîne.

console.log("hello my dear hello blah blah".match(/^(.*?)ell(.*)$/).slice(1));

Utilisation d'une variable (attention aux caractères spéciaux!) Et d'un constructeur RegExp.

var string = 'ell',
    regexp = new RegExp('^(.*?)' + string + '(.*)$');

console.log("hello my dear hello blah blah".match(regexp).slice(1));
3
Nina Scholz 20 nov. 2018 à 12:31

Vous pouvez rechercher le premier index de l'occurrence de votre chaîne de recherche, puis diviser l'original sur cet index, comme suit:

const sentence = "hello my dear hello blah blah"
const searchValue = 'ell';
const index = sentence.indexOf(searchValue);
const result= []
result.push(sentence.slice(0, index));
result.push(sentence.slice(index+ searchValue.length));
// result = ["h", "o my dear hello blah blah"]
2
Teun van der Wijst 20 nov. 2018 à 12:31

Remplacez par quelque chose qui ne sera pas dans la chaîne et divisez-le:

console.log( "hello my dear hello blah blah".replace('ello', '\0').split('\0') )
1
Slai 20 nov. 2018 à 13:14