代码之家  ›  专栏  ›  技术社区  ›  jitbit

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

  •  0
  • jitbit  · 技术社区  · 17 年前

    我在用电话 NVelocity Templating engine 生产 现场输出-您知道这类事情:

    Field        Start Pos   Field Length  Notes
    ----------   ---------   ------------  ---------
    Supplier      1           7            Leading Zeros
    GRN           8           9            -
    ...
    
    e.g.
    >0001234    123A<
    

    我试图用重载调用String.PadRight()来指定前导零,而NVelocity没有任何前导零。。

    这项工作:

    $Document.SupplierCode.PadRight(7)
    

    但这并不是:

    $Document.SupplierCode.PadRight(7,"0")
    

    • 单引号( '0' )

    • 双单引号( ''0'' )

    • 双引号( "0" )

    • 双引号( ""0""

    • 转义上述所有内容的引号( \"0\"

    • 没有报价!

    我所能找到的工作就是 NVelocity Homepage ,以及 Velocity Templating Language Reference page

    很抱歉,我无法提供或指出您可以自己测试您的想法的地方,但欢迎您提供任何建议!

    谢谢你的帮助;o)

    2 回复  |  直到 17 年前
        1
  •  1
  •   ste8    16 年前

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

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

    我还没有找到将参数指定为char的方法(从1小时起我就一直在使用NVelocity!),目前我只有一个脏的解决方案,比如在PadLeft/PadRight之后应用一个Replace(“,“0”),所以模板变为

    $Document.SupplierCode.PadRight(7).替换(“”,'0')

        2
  •  0
  •   jitbit    17 年前

    Public ReadOnly Property SupplierCodeFormatted() As String
        Get
            Return Supplier.Code.PadLeft(7, "0")
        End Get
    End Property
    
    推荐文章