首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >如何将字符串传递到NVelocity模板中的函数中?

如何将字符串传递到NVelocity模板中的函数中?
EN

Stack Overflow用户
提问于 2009-01-09 03:19:22
回答 2查看 706关注 0票数 0

我正在使用NVelocity模板引擎来生成一个固定长度的字段输出--您知道的:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Field        Start Pos   Field Length  Notes
----------   ---------   ------------  ---------
Supplier      1           7            Leading Zeros
GRN           8           9            -
...

e.g.
>0001234    123A<

问题是,--我试图用重载调用String.PadRight()来指定前导零,而NVelocity没有使用..

这工作:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$Document.SupplierCode.PadRight(7)

,但这不是:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
$Document.SupplierCode.PadRight(7,"0")

我试过的

  • 单引号('0')
  • 双引号(''0'')
  • 双引号("0")
  • 双引号(""0"")
  • 转义上述所有引号(\"0\")
  • 没有引号!

我发现的所有工作都是从NVelocity主页,和速度模板语言参考页面,尼醚是指向我的解决方案。

对不起,我无法提供或指向您的地方,您可以测试您自己的想法,但任何建议,您可能会非常欢迎!

谢谢你的帮助;

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-01-09 05:06:53

同事提出的一个解决方案是在Document对象中创建返回格式化字符串的另一个属性:

例如。

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Public ReadOnly Property SupplierCodeFormatted() As String
    Get
        Return Supplier.Code.PadLeft(7, "0")
    End Get
End Property
票数 0
EN

Stack Overflow用户

发布于 2010-01-21 09:28:33

目前,我正在处理相同的问题,据我所知,这是因为string类的PadLeft和PadRight函数作为字符而不是字符串接收第二个参数,即前导"0“。

NVelocity允许您使用'0‘将参数指定为字符串,但通过这种方式,它在内部生成一个强制转换异常(或类似的内容),因为参数被期望为char。

我还没有找到(我只是使用NVelocity从1小时!)一种将参数指定为char的方法,目前我只有一个脏的解决方案,例如在PadLeft / PadRight之后应用一个替换(“","0"),因此模板变成

$Document.SupplierCode.PadRight(7).Replace(‘,'0')

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/427728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文