问题:Java中怎么样检查一个字符串是不是数字呢

在解析之前,怎么样检查一个字符串是不是数字呢

回答一

这些通常是由一个简单的用户自定义函数去解决的(即,自带的 “isNumeric” 函数)

例如

public static boolean isNumeric(String str) { try {  Double.parseDouble(str);  return true;} catch(NumberFormatException e){  return false;  }
}

但是,如果你整天调用这个函数,并且你又希望这个检查是由于不是一个数字而失败抛出异常,那么那个机制性能不会很好的,因为你每次失败都要抛出异常,这是一个代价很大的操作

一个可供替代的选择就是使用正则表达式去检查是否为数字

public static boolean isNumeric(String str) {return str.matches("-?\\d+(\\.\\d+)?");  //match a number with optional '-' and decimal.
}

对于正则表达式的机制可千万要小心,因为它会失败的,如果你用的不是阿拉伯字母(即数字0到9).这是因为“/d”那部分正则表达式只匹配0-9的,并且它也不能有效地识别到国际上数字

或者另一个可供替代的选择就是用java.text.NumberFormat 这个对象了,我们可以检查 parser position的位置是否在字符串的末尾。如果是的话,我们就可以认为整个字符串都是一个数字了

public static boolean isNumeric(String str) {
NumberFormat formatter = NumberFormat.getInstance();
ParsePosition pos = new ParsePosition(0);
formatter.parse(str, pos);
return str.length() == pos.getIndex();
}

回答二

在Apache Commons Lang 3.5 以上的版本: NumberUtils.isCreatable 或者 StringUtils.isNumeric.

在Apache Commons Lang 3.4 以下的版本: NumberUtils.isNumber 或者 StringUtils.isNumeric.

你也可以使用StringUtils.isNumericSpace,它会在空字符串的情况下返回true并且忽略字符串内部的空格。另一个方法就是使用Java中经常用来检查是否可被解析为数字的NumberUtils.isParsable(链接中的Java文档包含每种方法的详细实例)

文章翻译自Stack Overflow:https://stackoverflow.com/questions/1102891/how-to-check-if-a-string-is-numeric-in-java

Java中怎么样检查一个字符串是不是数字呢相关推荐

  1. java怎么统计随机数出现次数,Excel统计出现次数、个数的VBA代码 java中怎么判断一个字符串中包含某个字符或字...

    延伸:java中怎么判断一个字符串中包含某个字符或字符 描述:...一个字符串中包含某个字符的单词说出现的次数 c#什么方法可以判断字符串中包含某个字符的个数? JAVA判断字符串数组中是否包含某字符 ...

  2. java中的字符,字符串,数字之间的转换(亲测)

    string 和int之间的转换 string转换成int  :Integer.valueOf("12") int转换成string : String.valueOf(12) ch ...

  3. java中的字符,字符串,数字之间的转换

    java中的字符,字符串,数字之间的转换 string 和int之间的转换 string转换成int :Integer.valueOf(" ") int转换成string : St ...

  4. Java中如何输入一个字符串

    Java中如何输入一个字符串 首先需导入java.util包中的Scanner类,如图: 接着在main里创建Scanner类对象,记得要把System.in加上这是专门获取用户输入的内容的,它会交给 ...

  5. java初始化字符串数组_在java中如何定义一个字符串数组

    展开全部 1. java中定义一个字符串数组方式如32313133353236313431303231363533e59b9ee7ad9431333366306465下,string类型和其他基本类型 ...

  6. JAVA中如何判断一个输入是数字(小数和整数)还是字符串?

    public class Test1 { public static void main(String[] args) {         Scanner input = new Scanner(Sy ...

  7. Java中如何判断一个字符串是否为数字

    方法一:异常处理 public static boolean isInteger(String str){try {Integer i = Integer.parseInt(str);return t ...

  8. java 字符串拆分技巧_在java中如何拆分一个字符串?

    "004-034556"为例用String#split()方法即可: String string = "004-034556"; String[] parts ...

  9. Java中实现统计一个字符串在另一个字符串中出现的次数统计

    public int getSubNum(String a,String b){int num=0;String str=a;int index=a.indexOf(b);while(index!=- ...

最新文章

  1. python插件下载地址
  2. python简单编程例子-中文方便就用中文编程!Python图形界面开发实例
  3. 数据中心空调故障案例集
  4. pdf html5 阅读进度,HTML5的进度条progress元素
  5. 解密NTFS下经EFS加密的文件
  6. 说说如何使用 Ant 把文件推送到 Linux
  7. BZOJ#3252. 攻略
  8. POI创建的文档具有不同条件的灵活样式
  9. 练习-用户模块-注册与登陆 190907
  10. cuda 和 cudnn 下载与安装
  11. 为什么外链建设要灵活多变呢?
  12. Xilinx SDK 初学之–API函数笔记(AXI_GPIO)
  13. Qt学习之自定义控件——颜色下拉框
  14. 思科模拟器:路由器基本配置
  15. Noiseware 5 降噪滤镜
  16. WPS设置章节多级标题自动编号(详细实用)
  17. 需要network lightweight filter disk 上的文件netft.sys
  18. 【网络】正向代理和反向代理
  19. 白杨SEO:谈谈如何让微信公众号排版设计好看又实用?
  20. linux内核安装编译

热门文章

  1. 用C++实现单链表的创建、逆置和输出 的两种方法
  2. verilator编译 更新文件的规则
  3. 【Leetcode | 235】 235. 二叉搜索树的最近公共祖先
  4. DataTable不能通过已删除的行访问该行的信息解决方法
  5. dagger2的初次使用
  6. 快速排序和快速选择(quickSort and quickSelect)算法
  7. CentOS6 下Samba服务器的安装与配置
  8. 建议11: 区别对待==和Equals
  9. 基于微信小程序开发的仿微信demo
  10. Kettle连接Hive2的问题解决思路