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

如何在二维数组的字符串元素中大写字母后添加空格?

解决方案

你可以通过嵌套数组映射结合正则替换来实现需求,核心逻辑是:仅对字符串元素做大写字母前插入空格的处理,非字符串元素直接保留原样。

实现步骤

  • 字符串处理逻辑:使用正则表达式/(?=[A-Z])/g,这个正则的正向预查会匹配所有紧跟大写字母的位置,将这些位置替换为空格,就能实现如GameBook→Game Book的拆分效果。如果需要排除字符串开头的大写字母(避免全大写字符串被拆成带前置空格的形式),可以改用/(?<!^)(?=[A-Z])/g。
  • 数组遍历逻辑:用两层Array.prototype.map()遍历二维数组,外层遍历每个子数组,内层遍历子数组的每个元素,通过typeof判断元素是否为字符串,是则应用正则替换,否则直接返回原元素。

完整代码

let arr = [
  ["Title", "GameBook"],
  ["anyOfYear", 1234],
  ["pieChart", "somePage"],
];

const processedArr = arr.map(subArr => 
  subArr.map(item => 
    typeof item === 'string' ? item.replace(/(?=[A-Z])/g, ' ') : item
  )
);

console.log(processedArr);
// 输出结果:
// [ ["Title", "Game Book"], ["any Of Year", 1234], ["pie Chart", "some Page"] ]

补充说明

  • 若需处理包装对象类型的字符串(如new String("test")),可以将类型判断改为Object.prototype.toString.call(item) === '[object String]',确保精准识别所有字符串类型。
  • 正则/(?<!^)(?=[A-Z])/g中的(?<!^)是负向预查,用于排除字符串开头的位置,避免HELLO被拆成 H E L L O,而是保持HELLO不变。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 10:30:52