簡體   English   中英

如何將字符串轉換為整數以在 Velocity 的循環中使用?

[英]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")轉換為Numberint

#set( $start = 0 )
#set( $spodId = $number.toNumber($SplitMap.get("$pod.id")) )
#set( $end = $spodId )

$numberNumberTool的默認鍵名,但可以通過在配置中指定不同的名稱來覆蓋它(例如$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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM