You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在Pug中如何用JavaScript拆分字符串为两段并保留完整单词

字符串拆分解决方案(保留完整单词)

简便正则解法

既然你已经用正则str.replace(/^([\s\S]{70}[^\s]*)[\s\S]*/, "$1")拿到了前半部分str1,后半部分可以直接基于str1的长度截取,再去掉开头多余空格:

const str = "hello i am a very long string that needs to be split into two different parts! thank you so much for helping.";
const str1 = str.replace(/^([\s\S]{70}[^\s]*)[\s\S]*/, "$1");
const str2 = str.slice(str1.length).trim();

也可以用一次正则直接捕获两个分组,一步到位:

const matchResult = str.match(/^([\s\S]{70}[^\s]*)\s*(.*)$/);
const str1 = matchResult[1];
const str2 = matchResult[2];

这个正则逻辑是:先捕获前70个字符后截止到下一个空格的完整单词(标题部分),跳过中间空格后,捕获剩余所有内容作为后半部分。

封装函数(适合Pug视图导入)

如果觉得正则可读性差,写个直观的函数更稳妥:

function splitStringByWord(str, charLimit = 70) {
  // 找到字符限制位置最近的空格索引
  let splitIndex = str.lastIndexOf(' ', charLimit);
  // 处理特殊情况:字符串短于限制长度,或最后一个单词超长
  splitIndex = splitIndex === -1 ? str.length : splitIndex;
  return {
    title: str.slice(0, splitIndex).trim(),
    content: str.slice(splitIndex).trim()
  };
}

// 使用示例
const str = "hello i am a very long string that needs to be split into two different parts! thank you so much for helping.";
const { title: str1, content: str2 } = splitStringByWord(str);

将这个函数导出后,就能在Pug视图里直接调用。

内容的提问来源于stack exchange,提问作者twopcz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.22 16:27:25