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

saveAsPDF函数CamelCase转PDF标题失效,求替代实现方案

解决CamelCase格式ID转标题的问题

问题分析

你之前尝试用ID.replace(/([A-Z])/g, ' $1').trim().capitalize()把CamelCase格式的ID(比如writtenLikeThis)转换成带空格的友好标题,但突然报错"ID.replace(...).trim(...).capitalize is not a function"——这是因为JavaScript字符串并没有内置的capitalize()方法,这就是代码失效的核心原因。

可行解决方案

你已经找到了有效的修复方案,这里拆解下这个方案的逻辑,帮你更清楚地理解:

更新后的函数通过正则匹配+回调处理,完美实现了CamelCase到Written Like This格式的转换,完整工作代码如下:

function saveAsPDF(ID) { 
  let canvas = document.querySelector('#' + ID); 
  // 生成canvas图片
  let canvasImg = canvas.toDataURL("image/png", 1.0); 
  // 初始化PDF文档
  let doc = new jsPDF('landscape'); 
  doc.setFontSize(12); 
  // 核心转换逻辑:将CamelCase ID转为带空格的标题格式
  doc.text(15, 15, ID.replace(/^[a-z]|[A-Z]/g, function(v, i) { 
    return i === 0 ? v.toUpperCase() : " " + v.toLowerCase()})); 
  doc.addImage(canvasImg, 'PNG', 10, 20, 280, 150 ); 
  doc.save( ID +'.pdf'); 
}

转换逻辑细节

正则/^[a-z]|[A-Z]/g会匹配两种字符:

  • ^[a-z]:字符串开头的小写字母
  • [A-Z]:所有大写字母

然后通过回调函数针对性处理:

  • 若匹配的是第一个字符(i === 0),直接转为大写
  • 若匹配的是大写字母,先添加空格,再转为小写,最终就把writtenLikeThis转换成了Written Like This

如果需要Camel case(仅首字母大写,其余单词小写)的格式,只需要微调回调里的处理逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 10:47:46