[英]How to convert a String to Integer for use in a loop in Velocity?
$pod.id
和$SplitMap.get("$pod.id")
不為空。
這個循環也有效:
#set($start = 0)
#set($end = 1)
但這不起作用:
#set($start = 0)
#set($end = $Integer.parseInt($SplitMap.get("$pod.id")))
它給出了異常:
#set($start = 0)
#set($end = $Integer.parseInt("$SplitMap.get("$pod.id"))")
這是在內部工作的 val 模板需要一些注釋
#set($val =1)
//Integer val = new Integer();
#set($start = 0)
#set($end = $val.parseInt($SplitMap.get("$pod.id")))
parseInt
的問題在於它會在字符串不可解析的情況下拋出異常。 如果您將NumberTool加載到您的上下文中,那么比parseInt
更好的解決方案如下:
#set($val = 1)
#set($start = 0)
#set($end = $numberTool.toNumber($SplitMap.get("$pod.id")).intValue())
有時 NumberTool 也被加載為$number
。
然而,一個小缺點是 NumberTool 只是解析它找到的第一個數字並忽略其余的數字,所以“123a”=> 123。
您必須將字符串$SplitMap.get("$pod.id")
轉換為Number
或int
:
#set( $start = 0 )
#set( $spodId = $number.toNumber($SplitMap.get("$pod.id")) )
#set( $end = $spodId )
$number
是NumberTool的默認鍵名,但可以通過在配置中指定不同的名稱來覆蓋它(例如$numberTool
)。 您必須檢查您的 Velocity 環境中使用的NumberTool名稱。
toNumber 方法返回:
如果無法進行轉換,則對象為Number或 null
如果你想顯式一個int
變量,而不是一個Number
對象,你可以對結果使用intValue
方法。 所以上面代碼的第二行看起來像這樣:
#set( $spodId = $number.toNumber($SplitMap.get("$pod.id")).intValue() )
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.