首页 > 解决方案 > 拆分字符串值,但将换行符保留在新数组中

问题描述

在我对 textarea 元素的字符串值执行一些逻辑之后,我想保留换行符。假设我的文本区域中有这个字符串:

"Test

Newline here"

大批:["Test\nNewline", "here"]

我怎样才能把它保存成这样:["Test", "\n", "Newline", "here"]

我的代码:

let bodyText = "Test

Newline here"

let bodyTextArray = bodyText.split(/ |\n|(?=\n)/g)

基本上正在发生的事情是拆分和删除空格和“\ n”。使用积极的前瞻是行不通的,我尝试消极的前瞻,但没有成功。

有任何想法吗?

标签: javascriptregexsplitline-breaks

解决方案


你可以匹配那些:

let bodyText = `Test

Newline here`
let bodyTextArray = bodyText.match(/^\n|\S+/gm)
console.log(bodyTextArray)

详情

  • ^\n- 行首和换行
  • |- 或者
  • \S+- 任何一个或多个非空白字符。

要支持 CRLF、LF 或 CR 行尾,请使用

/^(?:\r\n?|\n)|\S+/gm

其中(?:\r\n?|\n)替换\n并匹配一个 CR 和一个可选的 LF 字符,或者只是一个 LF 字符。


推荐阅读