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

React JS中如何将字符串内冒号前的单词设置为粗体

方案1:基于你现有拆分逻辑实现

你已经完成了字符串拆分,遍历拆分后的数组,把每个分段按第一个冒号拆为前后两部分,前半部分套粗体标签再拼接渲染即可:

function BoldKeywordBeforeColon() {
  const str = "aaaaa: lorem ipsum bb: do lor sit amet ccc: no pro movet";
  const regex = / (?=\w+:)/g;
  const splitString = str.split(regex);

  return (
    <p>
      {splitString.map((segment, index) => {
        const colonPos = segment.indexOf(":");
        // 拆分冒号前后内容,避免内容中包含冒号导致样式错误
        const keyword = segment.slice(0, colonPos);
        const content = segment.slice(colonPos);
        return (
          <span key={index}>
            <strong>{keyword}</strong>{content}{" "}
          </span>
        );
      })}
    </p>
  );
}

方案2:直接正则替换(适合无XSS风险的场景)

不用提前拆分字符串,直接用正则捕获所有冒号前的单词,替换为带粗体标签的格式,配合dangerouslySetInnerHTML渲染:

function BoldKeywordBeforeColon() {
  const str = "aaaaa: lorem ipsum bb: do lor sit amet ccc: no pro movet";
  // 分组捕获冒号前的单词,替换为粗体格式
  const formattedStr = str.replace(/(\w+):/g, "<strong>$1</strong>:");
  return <p dangerouslySetInnerHTML={{ __html: formattedStr }} />;
}

方案3:安全无XSS风险的实现

如果字符串可能包含用户输入的恶意内容,不想用dangerouslySetInnerHTML,可以通过正则匹配生成React元素数组渲染:

function BoldKeywordBeforeColon() {
  const str = "aaaaa: lorem ipsum bb: do lor sit amet ccc: no pro movet";
  const matchRegex = /(\w+):([\s\S]*?)(?=\s\w+:|$)/g;
  const renderElements = [];
  let matchResult;

  while ((matchResult = matchRegex.exec(str)) !== null) {
    renderElements.push(
      <span key={matchResult.index}>
        <strong>{matchResult[1]}</strong>:{matchResult[2]}
      </span>
    );
  }

  return <p>{renderElements}</p>;
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 11:54:05