我有一个从后端生成的字符串,在不同位置具有未知长度的 \n
。这意味着我有类似的东西:
Lorem Ipsum\n\n\dolor sit amet\n\n\n\n\n,consecteur adipiscing\nelit
有没有办法使用随机长度 \n
字符将此字符串拆分为数组?
编辑:以下是一些额外的技术细节:
我正在使用 Apache POI
和 JEE
来解析 Word 文档,因此我作为响应返回的字符串是由库生成的,我无法控制它。我已经浏览了该库使用的类,它确实在完成解析段落时添加了 \n
字符,它还为标题和副标题添加了 \t
字符,这里是如何精确返回字符串的最小化示例:
"I.\tIntroduction\t3\nII.\tECMA International :\t3\nIII.\tECMAScript & JavaScript :\t3\nIV.\tEditions ECMAScript :\t4\nV.\tECMAScript 2015 :\t5\na.\tNouvelles fonctionnalités « Number » et « Math » :\t5\n�?�\tEntiers Littéraux :\t5\n�?�\tNouvelles propriétés pour les objets « Number » et « Math » :\t5\nb.\tNouvelles fonctionnalités pour les strings :\t6\nc.\tLet & Const :\t6\n�?�\tLet :\t7\n�?�\tConst :\t8\nd.\tFonctions fléchées :\t8\ne.\tClasses :\t10\n�?�\tDéfinition d�??une classe :\t10\n�?�\tHéritage :\t11\n�?�\tMéthodes et propriétés statiques :\t12\n�?�\tGetters & Setters :\t12\nf.\tModules :\t13\ng.\tParamètres par défaut :\t14\nh.\tLa boucle For-Of :\t14\ni.\tGénérateurs :\t15\nj.\tPromises :\t15\nVI.\tConclusion :\t18\nVII.\tBibliographie :\t19\n\n\n\n"
这表示文档的摘要(整个字符串的一部分)。
直接将此字符串传递给 split 可以,但像下面这样传递返回的数据则不行:
ajax.post('tech/technology',`technology=${id}`)
.then((data) => {
console.log(data.response.split(/\n+/));
})
最佳答案
只需按照 \n+
的正则表达式进行拆分,该表达式将在一个或多个 \n
字符处拆分字符串:
const str = 'Lorem Ipsum\n\n\dolor sit amet\n\n\n\n\n,consecteur adipiscing\nelit';
console.log(str.split(/\n+/));
请注意,分割单个 \n
字符然后过滤掉空字符串(从而避免使用正则表达式)实际上可能更有效:
const str = 'Lorem Ipsum\n\n\dolor sit amet\n\n\n\n\n,consecteur adipiscing\nelit';
console.log(str.split('\n').filter(Boolean));
关于javascript - 使用未知长度字符串拆分 JavaScript 字符串,例如\n,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58146427/