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

Scriban中为何无法获取函数返回字符串的正确长度?

问题原因分析

你遇到的这个问题,核心是没搞懂Scriban里func定义的模板函数和字符串值的本质区别:

  • 当你用{{ func getString }}text{{ end }}定义函数时,getString本质是一个模板渲染函数——它的作用是在调用时把text输出到渲染流里,而不是直接返回"text"这个字符串值。
  • 当你直接写{{ getString | string.size }}时,你其实是在对getString这个函数对象本身调用string.size,而不是对它执行后的输出结果调用。函数对象的字符串表示(比如在Scriban里可能是类似<Function>的标识)长度为0,所以你得到了不符合预期的结果。
解决方法

要拿到函数执行后输出的文本长度,你需要先捕获函数执行的输出内容,再对捕获到的字符串计算长度:

{{ func getString }}text{{ end }}

{% capture rendered_text %}{{ getString }}{% endcapture %}
{{ rendered_text | string.size }} <!-- 这里会输出4,符合你的预期 -->

简单来说,{% capture %}标签的作用就是把中间渲染的内容捕获到一个变量里,这样你就能对这个变量(也就是真正的"text"字符串)调用string.size了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.22 07:48:01