Почему JavaScript string.split () не работает правильно в некоторых случаях? - PullRequest
0 голосов
/ 30 апреля 2020

Мне нужно разбить строку текста на составляющие слова, поэтому я использую регулярное выражение для разбиения ее на пустые места (в файле Typescript, кстати).

splitIntoWords(text: string) : Array<string> {
    const separator = ' ';
    const words = text.split(new RegExp(separator, 'g'));
    return words;
}

Это в основном работает, но я заметил, что я регулярно получаю слова в массиве, которые все еще содержат пробелы. Если я копирую текст в консоль Chrome и разделяю его (''), я получаю правильное количество слов, но когда я использую переменную (даже в консоли), в некоторых случаях она всегда терпит неудачу. Я не могу понять, в чем разница. Это пример моего текста:

"Le coronavirus en France : la décrue se poursuit en réanimation, la reprise économique au cœur des préoccupations. La mise en œuvre du plan de déconfinement élaboré par le gouvernement doit encore faire l’objet, jeudi, d’un « travail de concertation et d’adaptation aux réalités de terrain » avec les responsables et les élus locaux."

Регулярному выражению никогда не удается, например, разделить подстроку "économique au" на два компонента. Кто-нибудь знает, почему это происходит?

1 Ответ

6 голосов
/ 30 апреля 2020

Звучит так, что пробел иногда не просто пространство. Вы можете разделить на все пробелы, используя вместо этого \s для разделителя, который будет соответствовать любому пробелу, включая пробелы и символы табуляции.

const text = "Le coronavirus en France : la décrue se poursuit en réanimation, la reprise économique au cœur des préoccupations. La mise en œuvre du plan de déconfinement élaboré par le gouvernement doit encore faire l’objet, jeudi, d’un « travail de concertation et d’adaptation aux réalités de terrain » avec les responsables et les élus locaux.";
const words = text.split(/\s/);
console.log(words);

Другой вариант - использовать сопоставление вместо разбиения и сопоставлять непробельные символы.

const text = "Le coronavirus en France : la décrue se poursuit en réanimation, la reprise économique au cœur des préoccupations. La mise en œuvre du plan de déconfinement élaboré par le gouvernement doit encore faire l’objet, jeudi, d’un « travail de concertation et d’adaptation aux réalités de terrain » avec les responsables et les élus locaux.";
const words = text.match(/\S+/g);
console.log(words);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...