Java: parse int valor de um char

Eu só quero saber se há uma solução melhor para analisar um número de um caractere em uma string (supondo que sabemos que o caractere no índice n é um número).

String element = "el5"; String s; s = ""+element.charAt(2); int x = Integer.parseInt(s); //result: x = 5 

(inútil dizer que é apenas um exemplo)

Tente Character.getNumericValue(char) .

 String element = "el5"; int x = Character.getNumericValue(element.charAt(2)); System.out.println("x=" + x); 

produz:

 x=5 

O interessante sobre getNumericValue(char) é que ele também funciona com strings como "el٥" e "el५" que ٥ e são os dígitos 5 em árabe oriental e hindi / sânscrito, respectivamente.

Tente o seguinte:

 str1="2345"; int x=str1.charAt(2)-'0'; //here x=4; 

se u subtrair por char ‘0’, o valor ASCII não precisa ser conhecido.

Isso é provavelmente o melhor do ponto de vista do desempenho, mas é difícil:

 String element = "el5"; String s; int x = element.charAt(2)-'0'; 

Ele funciona se você assumir que seu personagem é um dígito, e somente em idiomas sempre usando Unicode, como Java …

Simplesmente subtraindo por caractere ‘0’ (zero) um caractere (do dígito ‘0’ a ‘9’) pode ser convertido em int (0 a 9), por exemplo, ‘5’ – ‘0’ fornece int 5.

 String str = "123"; int a=str.charAt(1)-'0'; 
 String a = "jklmn489pjro635ops"; int sum = 0; String num = ""; boolean notFirst = false; for (char c : a.toCharArray()) { if (Character.isDigit(c)) { sum = sum + Character.getNumericValue(c); System.out.print((notFirst? " + " : "") + c); notFirst = true; } } System.out.println(" = " + sum);