我正在使用NVelocity模板引擎来生成一个固定长度的字段输出--您知道的:
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主页,和速度模板语言参考页面,尼醚是指向我的解决方案。
对不起,我无法提供或指向您的地方,您可以测试您自己的想法,但任何建议,您可能会非常欢迎!
谢谢你的帮助;
发布于 2009-01-09 05:06:53
同事提出的一个解决方案是在Document对象中创建返回格式化字符串的另一个属性:
例如。
Public ReadOnly Property SupplierCodeFormatted() As String
Get
Return Supplier.Code.PadLeft(7, "0")
End Get
End Property
发布于 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')
https://stackoverflow.com/questions/427728
复制相似问题