我只是想知道是否有更好的解决方案来从字符串中的字符解析数字(假设我们知道索引n的字符是一个数字)。
String element = "el5";
String s;
s = ""+element.charAt(2);
int x = Integer.parseInt(s);
//result: x = 5
(说它只是一个例子没用)
我只是想知道是否有更好的解决方案来从字符串中的字符解析数字(假设我们知道索引n的字符是一个数字)。
String element = "el5";
String s;
s = ""+element.charAt(2);
int x = Integer.parseInt(s);
//result: x = 5
(说它只是一个例子没用)
当前回答
从性能的角度来看,这可能是最好的,但它很粗糙:
String element = "el5";
String s;
int x = element.charAt(2)-'0';
如果你假设你的字符是一个数字,并且只在总是使用Unicode的语言中工作,比如Java…
其他回答
尝试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。
String element = "el5";
int x = element.charAt(2) - 48;
从char中减去ascii值'0' = 48
从性能的角度来看,这可能是最好的,但它很粗糙:
String element = "el5";
String s;
int x = element.charAt(2)-'0';
如果你假设你的字符是一个数字,并且只在总是使用Unicode的语言中工作,比如Java…
试试下面的方法:
str1="2345";
int x=str1.charAt(2)-'0';
//here x=4;
如果你减去字符'0',ASCII值不需要知道。
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);