1. 字符串中提取数字
两个函数可以帮助我们从字符串中提取数字(整型、浮点型、字符型...)。
- parseInt()、parseFloat()...
- valueOf()
String str = "1230"; int d = Integer.parseInt(str); //静态函数直接通过类名调用,返回int型
//or int d3 = Integer.valueOf("1230"); //通过静态函数valueOf返回包装类Integer类型 System.out.println("digit3: " + d3);
注意:从字符串中提取可能会产生一种常见的异常: NumberFormatException。
原因主要有两种:
-
Input string contains non-numeric characters. (比如含有字母"123aB")
-
Value out of range.(比如Byte.parseByte("128") byte的数值范围在 -128~127)
解决方法:
通过 try-catch-block 提前捕捉潜在异常。
try { float d2 = Float.parseFloat(str); System.out.printf("digit2: %.2f ", d2 ); } catch (NumberFormatException e){ System.out.println("Non-numerical string only."); } try { byte d4 = Byte.parseByte(str); System.out.println("digit3: " + d4); } catch (NumberFormatException e) { System.out.println(" Value out of range. It can not convert to digits."); }
2. 数字转字符串
使用 String 类的 valueOf() 函数
String s = String.valueOf(d);
3. 代码
public class StringToDigit { public static void main(String[] args) { //convert string to digits using parseInt()、parseFloat()... String str = "127"; int d = Integer.parseInt(str); System.out.printf("d: %d ", d); try { float d2 = Float.parseFloat(str); System.out.printf("digit2: %.2f ", d2 ); } catch (NumberFormatException e){ System.out.println("Non-numerical string only."); } //or using valueOf() int d3 = Integer.valueOf("1230"); System.out.println("digit3: " + d3); try { byte d4 = Byte.parseByte(str); System.out.println("digit3: " + d4); } catch (NumberFormatException e) { System.out.println(" Value out of range. It can not convert to digits."); } //convert digits to string using valueOf() System.out.println(String.valueOf(d)); System.out.println(String.valueOf(d3)); } }
加油各位!如果觉得有用的话,可以点个推荐吗?(祈求脸.jpg)