如何将字符串仅首字母转为大写?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
相关产品推荐
相关产品推荐

