unity tipo parse convertir como arreglo velocity

velocity - tipo - int.tryparse c#



¿Cómo convertir una cadena en un entero en una plantilla de velocidad? (3)

Tengo un archivo de plantilla de velocidad que tiene los datos de xml. Quiero convertir la cadena en tipo entero.

¿Cómo puedo hacer eso?


Aha! Estado allí.

#set($intString = "9") #set($Integer = 0) $Integer.parseInt($intString)

Hacer esto usa la velocidad subyacente de Java. La variable $ Integer no es más que un objeto Integer de Java que puede usar para acceder a .parseInt

Editar: el código anterior es para demostración. Por supuesto, hay formas de optimizarlo.


El problema con parseInt es que arroja una excepción en caso de que la cadena no sea analizable. En caso de que tenga la NumberTool cargada en su contexto, una mejor solución que parseInt es la siguiente:

#set($intString = "009") #set($Integer=$numberTool.toNumber($intString).intValue()) #if($Integer) ## ok #else ## nok #end

A veces, NumberTool también se carga como $number .

Sin embargo, un pequeño inconveniente es que NumberTool simplemente analiza el primer número que encuentra e ignora el resto, por lo que "123a" => 123.


Si tiene algún control sobre el contexto de la velocidad, aquí hay una alternativa que alivia la necesidad de establecer una variable en la plantilla de Velocity.

Context velocityContext = new Context(); velocityContext.put(Integer.class.getSimpleName(), Integer.class);

Esto le permite llamar a los métodos estáticos de java.lang.Integer en su plantilla usando $Integer.parseInt($value) y no depende de que se haya llamado #set antes de realizar la conversión de tipo en la plantilla.