2011-02-11 33 views
171

我只想知道是否有更好的解決方案來從字符串中的字符解析數字(假設我們知道索引n處的字符是數字)。Java:從字符中解析int值

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

//result: x = 5 

(無用說,這只是一個例子)

回答

351

嘗試Character.getNumericValue(char)

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

生產:

x=5 

的好處約getNumericValue(char)的是,它也像"el٥""el५"串工程時٥分別在東阿拉伯語和印地文/梵文數字5。

+0

太棒了!謝謝 – deFreitas 2018-01-29 17:16:32

26

這可能是從性能上來看是最好的,但它的粗糙:

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

它的工作原理,如果你認爲你的性格是一個數字,只有在總使用Unicode,如Java語言...

+7

嘗試用字符串`「el5」`,其中`5`是印度的數字5。 :) – 2011-02-11 11:22:14

+2

我相信你很努力地找到這個例子...... :-)好吧,如果你必須解析非阿拉伯數字,避免這種方法。就像我說的那樣,它很粗糙。但它在99.999%的案例中仍然是最快的方法。 – 2011-02-11 11:26:37

49

嘗試以下操作:

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

如果u成炭減去 '0',ASCII值需要不是被瞭解的。

5
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); 
16

通過簡單地由炭減去 '0'(零)的燒焦(的數字 '0' 至 '9')可被轉化爲INT(0到9),例如, '5' - 「0 '給出int 5.

String str = "123"; 

int a=str.charAt(1)-'0';