Como no ha especificado ningún idioma en el que desee implementar esto, iré con Java y Python .
Aquí hay un método en Java que devuelve una representación entera de una String
que se le pasa, y [math] -1 [/ math] si falla la coincidencia de tipos:
private static int test_me (cadena de cadena)
{
if (! string.matches (“\\ d +”))
volver -1;
char [] array = string.toCharArray ();
int longitud = array.length;
int número = 0;
para (int i = longitud – 1; i> = 0; – i)
número + =
Math.pow (10, longitud – i – 1)
* (matriz [i] – 48);
número de retorno;
}
Lo que este método realmente hace es verificar si la String
entrada es numérica o no, mediante el uso de la expresión regular \\d+
, no procede en ese caso y devuelve [math] -1 [/ math].
En caso de que pase la verificación, continúa, crea una matriz de caracteres de la String
, y para cada carácter c
, se multiplica (c - 48)
con [math] 10 [/ math] elevado a la potencia de su índice para administrar el sistema de valor posicional.
¡Pan comido!
Y así es como en Python ( number
, el argumento de test_me
, es una Cadena aquí), que se comporta más o menos de la misma manera que su contraparte Java:
importación re;
def test_me (número):
patrón = re.compile (“\\ d +”);
si no pattern.match (número):
volver -1;
suma = 0;
longitud = len (número);
para i en rango (longitud – 1, -1, -1):
suma + = (10 ** (longitud – i – 1))
* (ord (número [i]) – 48);
suma de retorno;
Ambos idiomas le brindan las herramientas necesarias para completar el trabajo de fábrica.
Así es como en Java (asegurándose de manejar los casos de esquina también usando el manejo de excepciones; la representación entera se devuelve en caso de que la String string
sea realmente una, [math] -1 [/ math] de lo contrario):
clase pública StringToInteger {
public static void main (String [] args) {
Cadena [] matriz = {“321”, “cba”};
para (Cadena de cadena: matriz)
System.out.println (test_me (cadena));
}
private static Integer test_me (Cadena de cadena)
{
Entero entero = -1;
tratar
{
entero = Integer.parseInt (cadena);
}
catch (NumberFormatException nfe)
{
entero = -1;
}
retorno entero;
}
}
Salida:
321
-1
Y así es como en Python:
def test_me (número):
n = -1;
tratar:
n = int (número);
excepto:
n = -1;
finalmente:
volver n;
lista = [“123”, “abc”];
para la cadena en la lista:
print (test_me (cadena));
Salida:
123
-1
Java tiene su Integer.parseInt()
para convertir un objeto String
en un entero y NumberFormatException
para administrar la situación en caso de que NumberFormatException
, y Python tiene su método int()
que impone la conversión de tipos a un entero.
Espero que haya ayudado.