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

如何在Material-Table列中格式化字符串,将键名含冒号部分设为粗体?

解决方案

核心问题分析

你原来的代码直接用, 拆分整个字符串会导致值中包含, 的键值对被错误拆分(比如DomainLeader: Doe, John会被拆成DomainLeader: Doe和John),所以首先要先正确提取每个完整的键值对,再做格式化渲染。

修改后的代码实现

import Box from '@mui/material/Box';

// 解析超长字符串为键值对的工具函数
const parseLongString = (str) => {
  // 正则匹配:捕获键名 + 可包含逗号的值(直到下一个键名:出现)
  const regex = /(\w+): ([^,]+(?:, [^:]+)*)(?=, \w+:|$)/g;
  const pairs = [];
  let match;
  while ((match = regex.exec(str)) !== null) {
    pairs.push({
      key: match[1],
      value: match[2].trim()
    });
  }
  // 匹配失败时返回原始内容作为降级处理
  return pairs.length > 0 ? pairs : [{ key: '', value: str }];
};

// Material-Table 目标列的 render 配置
render: (rowData) => {
  const keyValuePairs = parseLongString(rowData.YourTargetColumn); // 替换为你的实际列名
  return (
    <Box style={{ display: 'flex', flexWrap: 'wrap', gap: '0.5rem' }}>
      {keyValuePairs.map((pair, idx) => (
        <span key={idx}>
          <em><strong>{pair.key}:</strong></em> {pair.value}
          {/* 最后一个键值对不添加尾部逗号 */}
          {idx !== keyValuePairs.length - 1 && ', '}
        </span>
      ))}
    </Box>
  );
},

关键调整说明

  1. 精准拆分键值对:通过正则表达式匹配完整的键名: 值结构,避免误拆分值中包含的, 。
  2. 匹配需求样式:用<em><strong>{pair.key}:</strong></em>实现你要的斜体加粗键名效果。
  3. 布局优化:flexWrap: 'wrap'让超长内容自动换行,gap控制键值对间距,提升可读性。
  4. 容错处理:若字符串格式不规范,自动降级显示原始内容,避免空渲染问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.15 06:01:00