0

我有一个字符串:

"This is the\nstring with\nline breaks\n"

我需要得到:

[This, is, the\n, string, with\n, line, breaks\n]

当我使用 .split(/\s{1,}/) - \n 换行符消失。如何保存它们?

需要考虑多个空间

4

4 回答 4

3

也许amatch会给你你想要的

"This is the\nstring with\nline breaks\n".match( /([^\s]+\n*|\n+)/g );

// ["This", "is", "the\n", "string", "with\n", "line", "breaks\n"]

[^\s]+表示尽可能多的非空格(一个或多个),
\n*表示尽可能多的新行(0 或更多),
|表示OR\n+表示尽可能多的新行(一个或多个)。

于 2012-11-29T12:29:56.360 回答
1

通过使拆分成为捕获组,它们将出现在结果数组中。然后你可以按摩:

 "This is the\nstring with\nline breaks\n".split(/(\s+)/);

结果是 :

["This", " ", "is", " ", "the", "\n", "string", " ", "with", "\n", "line", " ", 
 "breaks", "\n", ""]

我将作为练习留下这个数组的操作将产生您请求的结果。

于 2012-11-29T12:38:09.017 回答
0

改用这个:

.split(/ +/); // (/ +/ to take multiple spaces into account.)

因为:

"This is the\nstring with\nline breaks\n".split(' ');

回报:

["This", "is", "the
string", "with
line", "breaks
"]

您可能不会从字面上看到"\n"这些字符串,因为它们在控制台中被呈现为实际的换行符。

于 2012-11-29T12:24:16.860 回答
0

仅按空格分割

.split(" ");
于 2012-11-29T12:24:56.637 回答