You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何按空格、换行符及长度限制拆分字符串?

解决方案:按空格/换行拆分后再分割字符块

这需求我之前处理过,核心就是要优先以空格或换行作为拆分边界,不能让字符块跨边界包含空格对吧?直接用单个正则也能实现,但可读性不如分步处理好,我给你两种方案参考:

方案一:分步处理(推荐,可读性强)

先把原字符串按空格/换行分割成独立的单词/片段,再对每个片段拆分最多4字符的块,最后合并结果:

const s = "Tyrannosaurus Rex";
// 1. 按空格或换行分割,同时过滤掉空字符串(避免连续空格/首尾空格的影响)
const wordParts = s.split(/[\s\n]/).filter(Boolean);
// 2. 对每个片段拆分成最长4字符的块,再扁平化合并
const resultArr = wordParts.flatMap(part => part.match(/.{1,4}/g) || []);

console.log(resultArr); // 输出: ["Tyra", "nnos", "auru", "s", "Rex"]

方案二:单正则实现(简洁但可读性稍弱)

如果追求一行代码搞定,可以用带有正向预查的正则,确保每个匹配块不会跨空格/换行:

const s = "Tyrannosaurus Rex";
const resultArr = s.match(/[^\s\n]{1,4}(?=[\s\n]|$)|[^\s\n]+/g) || [];

console.log(resultArr); // 同样输出目标数组

解释下这个正则:

  • [^\s\n]{1,4}(?=[\s\n]|$):匹配1-4个非空格/换行的字符,且后面跟着空格/换行或者字符串结尾
  • |:或者
  • [^\s\n]+:匹配剩余的不足4字符的片段(其实前面的规则已经覆盖,但加这个更稳妥)

两种方案都能满足你的需求,个人更推荐第一种,后续维护起来更清晰~

内容的提问来源于stack exchange,提问作者Shah Abaz Khan

火山引擎 最新活动