按空格拆分字符串,但不包括换行符内的空格,并保留换行符

5

我有一个字符串,格式如下:

"word1 word2 \ngroup of words\n"

我需要按空格分割它,但排除出现在2个 \n 之间的空格,并保留 \n 字符。所以结果将是类似于这样的数组:
[
 "word1",
 "word2",
 "\ngroup of words\n"
]

我找到了一些使用逗号,而不是换行符\n实现相同效果的结果,但我无法使用其他字符来替换它。

目前我正在使用下面的代码,但它不能保留\n

input.split('\n').flatMap((s,i)=>i%2?`\n${s.trim()}\n`:s.trim().split(' ')).filter(v=>v)

注意:

如果输入字符串在 \n 之前有单词,则始终会有一个空格,即字符串可以包含 word1 \ngroup 1\n,但永远不会是 word1\ngroup 1\n

一个字符串也可以包含多个组,例如 word1 \ngroup 1\n word2 \ngroup 2\n

1个回答

3
你可以使用。

const text = "word1 word2 \ngroup of words\n";
console.log(text.match(/\n.*\n|\S+/g))

/\n.*\n|\S+/g 模式匹配多个出现的:

  • \n.*\n - 匹配一个换行符,然后是除了换行符以外的0个或多个字符(尽可能多),最后是一个换行符
  • | - 或者
  • \S+ - 一个或多个非空白字符。

请参见正则表达式演示


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接