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

如何将字符串仅首字母转为大写?Typst正则替换报错求助

问题解决与Typst回调函数说明

首字母大写代码修正

你的代码报错是因为replace的回调参数m是匹配字典对象,不是直接的字符串,直接传upper(m)会因类型不匹配触发错误。要提取匹配到的文本,需调用m.text。

修正后的代码:

#let text="oh this is it"
#text.replace(regex("^\\w"), m => upper(m.text))

注意:Typst中字符串内的反斜杠需要写两个\\做转义,否则会被识别为特殊字符转义符。

另外,Typst内置了capitalize()函数,直接调用#capitalize(text)就能实现字符串首字母大写,比正则写法更简洁。

Typst自定义回调函数要点

Typst中支持回调的函数(如replace、数组map方法等),回调参数的类型需结合具体函数规则处理:

  • 针对str.replace(pattern, callback):回调接收一个匹配字典,包含text(匹配到的字符串)、start(匹配起始位置)、end(匹配结束位置)等键,需从字典中提取对应值处理。
  • 针对数组map方法:回调接收数组元素和索引两个参数,示例:[1,2,3].map((val, idx) => val + idx)。
  • 自定义回调可通过箭头函数或let定义独立函数实现,示例:
    #let match-upper(match) = upper(match.text)
    #text.replace(regex("^\\w"), match-upper)
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.25 08:12:34