简述

项目中有时候需要判断一个String 的字符串能不能转换成 int,我在搜索引擎上搜索到时候发现有人问过同样的问题,但是回答者会有String 怎么能转换成Integer 的疑问,这里标注一下,同时也为了以后自己看到时候不要引起误导。这里说的是,例如 String str1 = 123 或者 String str2 = 0.44 这样的String, 可以说它们是String 类型的数字。

解决方法

方法一:正则表达式

我们可以通过正则表达式,判断接收到的String 中有没有字母从而来判断这个String 能否转换成 int,这里就不把正则表达式附上了,网上有很多,毕竟菜鸟,自己写怕遗漏了什么。。

方法二:StringIndexOutOfBoundsException 异常

当把不能转换成 int 的String 强制转换的时候,会抛出 StringIndexOutOfBoundsException 异常,我们可以将错就错,利用这个异常,即,如果抛出了此异常则 该String 不能转换成 int,否则可以。

String date = 201311;
try {
    int year =Integer.valueOf(date.substring(0, 4));
    int month=Integer.valueOf(date.substring(4,6));
    // 如果没抛出异常,则 date 可以正确转换成 int
}catch(StringIndexOutOfBoundsException e){
    // 如果抛出异常,则 date 不能转换成 int
}

但这种靠异常来判断的做法感觉不是很好。

方法三:工具类 NumberUtils(推荐) 在 commons-lang.jar 中,有个Util 类, NumberUtils,其中包括两个方法:

1.
NumberUtils.isDigits(String str)
Checks whether the String contains only digit characters.
Null and empty String will return false.
Parameters:
str the String to check
Returns:
true if str contains only Unicode numeric
 
2.
NumberUtils.isNumber(String str)
Checks whether the String a valid Java number.
Valid numbers include hexadecimal marked with the 0x qualifier, scientific notation and numbers marked with a type qualifier (e.g. 123L).
Null and empty String will return false.
Parameters:
str the String to check
Returns:
true if the string is a correctly formatted number

正如描述中说的:

NumberUtils.isDigits(str)     //判断str是否整数, true-整数  false-非整数
             NumberUtils.isNumber(str)  //判断str是否数字(整数、小数、科学计数法等等格式)

自己写正则表达式担心出错的同学可以试试这个工具类,虽然 工具类也是人写的也可能出错,但发布出来,用的人多,估计有错误也会更快被发现,如果还不放心也可以先看看其中的源码。

另外,commons-lang.jar 除了包含这一个 Utils 之外还有很多,如 ArrayUtils,BooleanUtils,CharSequenceUtils 等,在此不一一列举。commons-lang.jar 的下载地址可以到

下载

  • jar 包及源码

转载于:https://www.cnblogs.com/yuxiaoqi/p/3422304.html

java中如何判断一个String 是否可以强制转换成Integer相关推荐

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

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

  2. Java中collection.toArray(new String[0])、resultSet.toArray(new Integer[0])、Set.toArray()new 数组的性能比较

    一.在调用Set的toArray()方法的时候 在使用HashMap的时候,它的keySet()方法将返回一个Set集合 且Set是继承自Collection的,在使用toArray()的时候其实转换 ...

  3. java中如何输入一个字符(用字符串转换)

    java中的Scanner类中并没有包括单独输入char型字符的情况,但是我们可以通过输入一个长度仅为1的字符串,然后将字符串转换为char型字符,再用新的char型变量接收就好了. java源文件名 ...

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

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

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

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

  6. java中把年月日时间(yyyy-MM-dd)或其他时间格式转换成只有年月(yyyy-MM)或其他时间格式的简单方法

    用SimpleDateFormat类进行时间格式定义. yyyy-MM-dd  即:年-月-日   只需要年月,可写为:yyyy-MM 具体操作如下代码所示: import java.text.Sim ...

  7. java 包含几个字符_java中如何判断一个字符串包含几个指定字符

    java中如何判断一个字符串包含几个指定字符 可以用String类里的indexOf(String s,int i)方法,这个方法s是字符串div,i是从i下标开始查找该字符串在调用字符串中的位置,返 ...

  8. java 判断数组已经存满_详解Java中数组判断元素存在几种方式比较

    1. 通过将数组转换成List,然后使用List中的contains进行判断其是否存在 public static boolean useList(String[] arr,String contai ...

  9. java中如何判断map是否为空

    java中判断map是否为空的方法是:可以利用isEmpty()函数来判断.isEmpty()函数是java中用于判断某种容器是否有元素的系统库函数,例如用来判断ArrayList.HashSet.H ...

最新文章

  1. vim替换字符串带斜杠_Vim、gvim操作替换
  2. python day two,while
  3. P4512 【模板】多项式除法
  4. vb.net2019- 调用 opencv
  5. 最完整的Win7快捷键
  6. 面试官:面对业务量增长10倍、100倍怎么处理? 当场哭出声。。
  7. vue父组件变量传递子组件_Vue.js 父组件向子组件传递数据通过 props
  8. JAVA框架--hibernate、struts2、spring
  9. Cisco交换机设置管理IP
  10. steam服务器维护6月28,绝地求生6月28日维护更新公告 绝地求生6月28日更新内容汇总...
  11. BURP安装Turbo Intruder插件报错问题
  12. 我所理解的Reed solomon 算法
  13. Windows蓝屏之后,DUMP分析教程
  14. 第四届“泰迪杯”数据分析技能赛-赛题A:《通讯产品销售和盈利能力分析》报告
  15. 局域网无线投屏到其他电脑
  16. 初二数学勾股定理,八年级上册思维导图简单清晰
  17. Fractions (水)
  18. Java的垃圾回收机制详解——从入门到出土,学不会接着来砍我!
  19. Kali系统及Frida环境配置
  20. 纯记录,没干货,Mac 的 iterm2 远程链接 中文乱码 问号?正确的解决方案

热门文章

  1. solr4 mysql自动更新_solr7.4 定时增量更新数据-Go语言中文社区
  2. java pdf 文字_Java给pdf文件添加文字等信息
  3. R2: 相关系数、复相关系数及半偏相关系数之间的联系
  4. [每日一题] OCP1z0-047 :2013-07-12 多表插入
  5. 监听独立于数据库服务器的配置,解决ORA-12520及ORA-12545错误
  6. android得到assets下面的资源
  7. 现代信号处理 张贤达_清华信号处理著名学者张贤达去世,享年74岁
  8. SpringCloud之高可用的分布式配置中心(Spring Cloud Config)(七)
  9. boost使用log库编译报错
  10. 陷阱:在 WebApp 中谨防 Singleton 错误