Java Character getNumericValue()方法

Character,getNumericValue

Character提供的靜態方法getNumericValue(),本以為是將字元轉為int的方法,但在研讀java 8 doc後發現並非如此,描述如下

Returns the int value that the specified Unicode character represents.For example, the character '\u216C' (the roman numeral fifty) will return an int with a value of 50.

返回指定Unicode字符表示的int值,查詢'\u216C'發現有Unicode Data這個東西,當中有多個properties其中ㄧ項就是Numeric為50,其為羅馬數字L代表數字50的意涵,

例如:'\u2166'為字符Ⅶ,ㄧ般我們知道他代表羅馬數字7,透過getNumericValue()可以得到7。

其它說明:

  1. A-Z不論大小寫、全形半形由getNumericValue()得到的皆為10-35,例如:A或a得到的NumericValue 為10。
  2. 另外該character沒有numeric value 會回傳-1,若該character不能表為非負整數(例如小數)則回傳-2。

應用範例:計算String "652" 拆開加總,6+5+2,char 數字的NumericValue等於自己

public static void main(String[] args) throws IOException {
	String str = "652";
	char[] strs = str.toCharArray();
	int sum1=0;
	int sum2=0;
	int sum3=0;
	for(char c :strs) {
		sum1 +=Character.getNumericValue(c);
		sum2 +=c;
		sum3 += Integer.parseInt(String.valueOf(c));
	}
	System.out.println(sum1);//13
	System.out.println(sum2);//157 為ASCII code 相加 54+53+50 =157 
	System.out.println(sum3);//13
}

Reference: