Velocidad añadiendo valores dentro de una declaración de concatenación
Disculpas si esto ha sido preguntado antes, pero no pude encontrar una respuesta directa.
Tengo el siguiente código, la aplicación es de terceros, por lo que el $supernet entrante se proporciona como una cadena. Entonces lo que quiero hacer es tomar una dirección IP y luego manipularla para crear una lista de subredes basadas en una plantilla.
#set ($Supernet = "10.10.10.10")
#set ($octs = $Supernet.split("\."))
#set ($netmgmt[2] = "$octs[0].$octs[1].$octs[2].$octs[2]+1")
$netmgmt
Pero esto, como esperaba, da el resultado “10.10.10.10+1”.
Descubrí que puedo hacer esto de una manera más detallada:
- Convertir $oct[2] a un número entero y almacenarlo en una variable.
- Crear una variable temporal y almacenar el resultado de la suma de $oct[2] convertido.
- Luego, usar esto para crear la cadena.
$Integer = $convert.toInteger($oct[2])
#set ($newoct = $Integer + 1)
#set ($netmgmt[2] = "$octs[0].$octs[1].$octs[2].$newoct")
Pero tengo muchos de estos para crear y esto se volverá largo y confuso.
Entonces, estoy tratando de averiguar si puedo escribir #set ($octs = $Supernet.split("."))
para almacenar como números enteros. Honestamente, tratar de convertir directamente cada valor de la matriz a int no parece funcionar según lo que he encontrado en línea. ¿Esperaba que lo siguiente diera como resultado “$oct1 = 10”, pero no lo hace?
#set ($Supernet = "10.10.10.10")
#set ($octs = $Supernet.split("\."))
#set ($oct1 = $convert.toInteger($oct[0])
Soy nuevo en Velocity, cualquier ayuda es apreciada.
davy.ai
Para manipular la dirección IP proporcionada como una cadena, puedes usar el siguiente código:
Aquí tienes una explicación de lo que hace el código:
?integer
intentará convertir la cadena a un número entero y, si falla, devolverá null.Esto debería darte el resultado deseado de “10.10.11.10”.