Java:从char解析int值

Noy*_*oya 215 java int parsing char parseint

我只是想知道是否有更好的解决方案来解析字符串中的字符中的数字(假设我们知道索引n处的字符是数字).

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

//result: x = 5
Run Code Online (Sandbox Code Playgroud)

(没用说,这只是一个例子)

Bar*_*ers 426

试试Character.getNumericValue(char).

String element = "el5";
int x = Character.getNumericValue(element.charAt(2));
System.out.println("x=" + x);
Run Code Online (Sandbox Code Playgroud)

生产:

x=5
Run Code Online (Sandbox Code Playgroud)

最好的事情getNumericValue(char)是,它也适用于字符串,"el?"以及"el?"在哪里??分别是东阿拉伯语和印地语/梵语中的数字5.


vas*_*shu 58

请尝试以下方法:

str1="2345";
int x=str1.charAt(2)-'0';
//here x=4;
Run Code Online (Sandbox Code Playgroud)

如果你用char'0'减去,则不需要知道ASCII值.

  • @msj因为ascii中的''0','1','2',...`的值是递增的.所以例如ascii中的'0'是48,'1'是49,等等.所以如果你拿''2' - '0',你真的得到'50 - 48 = 2`.看一下ASCII表,以便更好地理解这个原理.另外,''x'表示在Java中获取字符的ascii值. (9认同)

Ale*_*noy 33

从性能的角度来看,这可能是最好的,但它很粗糙:

String element = "el5";
String s;
int x = element.charAt(2)-'0';
Run Code Online (Sandbox Code Playgroud)

如果你假设你的角色是一个数字,它只能用于总是使用Unicode的语言,比如Java ......

  • 尝试使用字符串""el5"`其中`5`是印度的数字5.:) (7认同)
  • 我确定你努力找到这个例子...... :-)好的,如果你必须解析非阿拉伯数字,请避免使用这种方法.就像我说的那样,很粗糙.但它仍然是99.999%的工作中最快的方法. (3认同)

小智 16

通过简单地减去char'0'(零),char(数字'0'到'9')可以转换成int(0到9),例如'5' - '0'给出int 5.

String str = "123";

int a=str.charAt(1)-'0';
Run Code Online (Sandbox Code Playgroud)


小智 6

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);
Run Code Online (Sandbox Code Playgroud)