我需要将文本字符串拆分成其组成词,因此我使用正则表达式将其拆分为空白(在Typescript文件中,btw)。
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."
例如,正则表达式从未设法将子字符串“économiqueau”分为两个部分。有人知道为什么会这样吗?
答案 0 :(得分:6)
听起来空白有时是不是只是一个空白。您可以使用\s
来分隔 all 空格,该分隔符将匹配任何空格,包括空格字符和制表符。
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);
另一种选择是使用match而不是split,并且匹配非空格字符。
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);