根据字符限制和句点拆分字符串



我想根据30个字符的限制拆分字符串,这里的问题是它应该在句点(.(、逗号(,(或空格((上断开。即30的字符串长度或先到的定界符。我尝试使用regex进行匹配,这可以很好地拆分,但没有使用分隔符。

例如,这是我的示例代码。

let x='Lorem ipsum dolor sit amet. Excepteur cuptat non proident, consectetur adipiscing elite detailo';
let splitString = x.match(/.{1,30}/g);
console.log(splitString);

这里我得到的输出是

[
"Lorem ipsum dolor sit amet. Ex",
"cepteur cuptat non proident, c",
"onsectetur adipiscing elite de",
"tailo"
]

但我希望使用逗号、句点或空格作为分隔符。预期输出为

[
"Lorem ipsum dolor sit amet.",
"Excepteur cuptat non proident,",
"consectetur adipiscing elite",
"detailo"
]

let x='Lorem ipsum dolor sit amet. Excepteur cuptat non proident, consectetur adipiscing elite detailo';
let splitString = x.match(/.{1,30}[.s,]/g).map(item => item.trim());
const remaining = x.replace(splitString.join(' '), '');
splitString = [...splitString, remaining.trim()]
console.log(splitString);

编辑

我去掉了子字符串中的尾随空格。不知道是否有必要,但现在已经有了想要的确切结果。

您可以与此正则表达式匹配:

[^s].{1,29}((?=s|$)|(?<=[.,]))

它查找一个非空格字符([^s](,然后最多查找29个其他字符(.{1,29}(,这些字符要么是:

  1. 后面跟一个空格或行(?=s|$)的末尾;或
  2. 以逗号或句号(?<=[.,])结尾

let x='Lorem ipsum dolor sit amet. Excepteur cuptat non proident, consectetur adipiscing elite detailo';
let splitString = x.match(/[^s].{1,29}((?=s|$)|(?<=[.,]))/g);
console.log(splitString);

相关内容

  • 没有找到相关文章

最新更新