我只是想知道是否有更好的解决方案来从字符串中的字符解析数字(假设我们知道索引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
(说它只是一个例子没用)
当前回答
使用二进制与0b1111:
String element = "el5";
char c = element.charAt(2);
System.out.println(c & 0b1111); // => '5' & 0b1111 => 0b0011_0101 & 0b0000_1111 => 5
// '0' & 0b1111 => 0b0011_0000 & 0b0000_1111 => 0
// '1' & 0b1111 => 0b0011_0001 & 0b0000_1111 => 1
// '2' & 0b1111 => 0b0011_0010 & 0b0000_1111 => 2
// '3' & 0b1111 => 0b0011_0011 & 0b0000_1111 => 3
// '4' & 0b1111 => 0b0011_0100 & 0b0000_1111 => 4
// '5' & 0b1111 => 0b0011_0101 & 0b0000_1111 => 5
// '6' & 0b1111 => 0b0011_0110 & 0b0000_1111 => 6
// '7' & 0b1111 => 0b0011_0111 & 0b0000_1111 => 7
// '8' & 0b1111 => 0b0011_1000 & 0b0000_1111 => 8
// '9' & 0b1111 => 0b0011_1001 & 0b0000_1111 => 9
其他回答
Integer: Integer或int数据类型是一个32位有符号的二补整数。其值范围介于- 2,147,483,648(-2^31)到2,147,483,647(2^31 -1)(含)之间。其最小值为- 2,147,483,648,最大值为2,147,483,647。缺省值为0。int数据类型通常用作整型值的默认数据类型,除非内存没有问题。
Example: int a = 10
Character: char数据类型是单个16位Unicode字符。它的值范围在' \u0000 '(或0)到' \uffff '(或包括65,535)之间。char数据类型用于存储字符。
Example: char ch = 'c'
方法 有许多方法可以将Char数据类型转换为Integer (int)数据类型。下面列出了其中的一些。
使用ASCII值 使用String.valueOf()方法 使用Character.getNumericValue()方法
1. 使用ASCII值
此方法使用TypeCasting获取给定字符的ASCII值。相应的整数是从这个ASCII值减去0的ASCII值计算出来的。换句话说,该方法通过查找该char的ASCII值与ASCII值0之间的差值,将该char转换为int。
例子:
// Java program to convert
// char to int using ASCII value
class GFG {
public static void main(String[] args)
{
// Initializing a character(ch)
char ch = '3';
System.out.println("char value: " + ch);
// Converting ch to it's int value
int a = ch - '0';
System.out.println("int value: " + a);
}
}
输出
char value: 3
int value: 3
2. 使用String.valueOf()方法
String类的valueOf()方法可以将各种类型的值转换为String值。它可以将int、char、long、boolean、float、double、object和char数组转换为String,可以使用Integer.parseInt()方法将String转换为int值。下面的程序演示了valueOf()方法的使用。
例子:
// Java program to convert
// char to int using String.valueOf()
class GFG {
public static void main(String[] args)
{
// Initializing a character(ch)
char ch = '3';
System.out.println("char value: " + ch);
// Converting the character to it's int value
int a = Integer.parseInt(String.valueOf(ch));
System.out.println("int value: " + a);
}
}
输出
char value: 3
int value: 3
3.使用Character.getNumericValue()方法
Character类的getNumericValue()方法用于获取任何特定字符的整数值。例如,字符' 9 '将返回一个值为9的int。下面的程序演示了getNumericValue()方法的使用。
例子:
// Java program to convert char to int
// using Character.getNumericValue()
class GFG {
public static void main(String[] args)
{
// Initializing a character(ch)
char ch = '3';
System.out.println("char value: " + ch);
// Converting the Character to it's int value
int a = Character.getNumericValue(ch);
System.out.println("int value: " + a);
}
}
输出
char value: 3
int value: 3
裁判:https://www.geeksforgeeks.org/java-program-to-convert-char-to-int/
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值不需要知道。
使用二进制与0b1111:
String element = "el5";
char c = element.charAt(2);
System.out.println(c & 0b1111); // => '5' & 0b1111 => 0b0011_0101 & 0b0000_1111 => 5
// '0' & 0b1111 => 0b0011_0000 & 0b0000_1111 => 0
// '1' & 0b1111 => 0b0011_0001 & 0b0000_1111 => 1
// '2' & 0b1111 => 0b0011_0010 & 0b0000_1111 => 2
// '3' & 0b1111 => 0b0011_0011 & 0b0000_1111 => 3
// '4' & 0b1111 => 0b0011_0100 & 0b0000_1111 => 4
// '5' & 0b1111 => 0b0011_0101 & 0b0000_1111 => 5
// '6' & 0b1111 => 0b0011_0110 & 0b0000_1111 => 6
// '7' & 0b1111 => 0b0011_0111 & 0b0000_1111 => 7
// '8' & 0b1111 => 0b0011_1000 & 0b0000_1111 => 8
// '9' & 0b1111 => 0b0011_1001 & 0b0000_1111 => 9