首页 > 解决方案 > 为什么 JavaScript 的 string.split() 在某些情况下不能正常工作?

问题描述

我需要将一串文本拆分为其组成词,因此我使用正则表达式将其拆分为空格(在 Typescript 文件中,顺便说一句)。

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

这主要是有效的,但我注意到我经常在数组中得到仍然包含空格的单词。如果我将文本复制到 Chrome 控制台并 split(' ') ,我会得到正确数量的单词,但是当我使用变量时(即使在控制台中),它在某些情况下总是会失败。我无法弄清楚有什么区别。这是我的文字的一个例子:

"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”分成两个部分。有谁知道为什么会这样?

标签: javascriptstringtypescript

解决方案


听起来空白有时不仅仅是一个普通的空间。您可以使用for 分隔符来拆分所有\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);


推荐阅读