如何仅将第一个字母转换为大写?

问题描述 投票:0回答:1

所以,我只想使用 REGEX 转换第一个字母,然后绕过函数将其大写。 但是 Typst 返回 “找到字典中的预期字符串或内容”

这是来源:

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

哦,如果您对自定义函数作为 Typst 中的回调有深入了解,我会很高兴,因为我真的很难找到关于它的良好文档。

谢谢

我尝试了该代码,我希望第一个字符能够被升级,但没有成功

regex string replace case typst
1个回答
0
投票

所以,我终于可以解决这个问题了。

虽然 Typst 脚本看起来像 JS,但实现细节有点令人困惑,因为文档缺少此类细节。

此表达式将返回预期的字符串或字典中找到的内容

#text.replace(regex("^\w"), m=>upper(m))

问题出在

m=>upper(m)
。因此,Typst 将捕获的
m
匹配视为 Dictionary 而不是捕获的直接值,而
upper()
期望其参数为字符串或内容。

修复很简单。

  • 首先,让我们通过
    repr(m)
    查看字典的键。 它会返回
    (start: 0, end: 1, text: "o", captures: ())
  • 从那里,我们知道我们有
    .text
    字典键,因此我们将字符串作为
    upper()
    函数的有效值。
  • 固定代码为
    upper(m.text)

完整固定代码:

#let text="oh this is it"
#text.replace(regex("^\w"), m=>{
repr(m)
upper(m.text)
})
© www.soinside.com 2019 - 2024. All rights reserved.