提供了两个静态方法,getNumber可以返回数字类型的字符串数组,getIndexNumber可以查询某个位置的字符类型的字符串,支持提供默认值,个人认为这个非常重要,以防一些数据问题带来的异常。
如果需要其它方法,可以在getNumber的基础上扩展。

public class NumberHelper {private static final Pattern INT_REGEX;private static final Pattern FLOAT_REGEX;static {INT_REGEX = Pattern.compile("(\\d+)");FLOAT_REGEX = Pattern.compile("(\\d+\\.\\d+)");}/*** 获取字符串第 index 个数字* 第一个index=1** @param str* @param defaultStr* @param index* @return*/public static String getIndexNumber(String str, String defaultStr, int index) {String[] number = getNumber(str);if (ObjectUtils.isEmpty(number) || number.length < index) {return defaultStr;}return number[index-1];}/*** 获取字符串中的所有数字** @param str* @return*/public static String[] getNumber(String str) {String result = "";if (ObjectUtils.isEmpty(str)) {return result.split(",");}//先判断有没有整数,如果没有整数那就肯定就没有小数Matcher m = INT_REGEX.matcher(str);if (m.find()) {Map<Integer, String> map = new TreeMap<>();m = FLOAT_REGEX.matcher(str);//遍历小数部分while (m.find()) {result = m.group(1) == null ? "" : m.group(1);int i = str.indexOf(result);String s = str.substring(i, i + result.length());map.put(i, s);//排除小数的整数部分和另一个整数相同的情况下,寻找整数位置出现错误的可能,还有就是寻找重复的小数// 例子中是排除第二个345.56时第一个345.56产生干扰和寻找整数345的位置时,前面的小数345.56会干扰str = str.substring(0, i) + str.substring(i + result.length());}//遍历整数m = INT_REGEX.matcher(str);while (m.find()) {result = m.group(1) == null ? "" : m.group(1);int i = str.indexOf(result);//排除jia567.23.23在第一轮过滤之后留下来的jia.23对整数23产生干扰if (i!=0&&String.valueOf(str.charAt(i - 1)).equals(".")) {//将这个字符串删除str = str.substring(0, i - 1) + str.substring(i + result.length());continue;}String s = str.substring(i, i + result.length());map.put(i, s);str = str.substring(0, i) + str.substring(i + result.length());}result = "";for (Map.Entry<Integer, String> e : map.entrySet()) {result += e.getValue() + ",";}result = result.substring(0, result.length() - 1);} else {result = "";}return result.split(",");}
}

JAVA提取字符串信息中的数字(包括整数,小数)工具类相关推荐

  1. java s.charat_Java中s.charAt(index)用于提取字符串s中的特定字符操作

    charAt(int index)方法是一个能够用来检索特定索引下的字符的String实例的方法. charAt()方法返回指定索引位置的char值.索引范围为0~length()-1. 如: str ...

  2. java中bitconverter_【Java】BitConverter(数字转字节数组工具类)

    import java.nio.ByteOrder; import java.nio.charset.Charset; /** * 数字转字节数组工具类 */ public class BitConv ...

  3. excel如何提取单元格中的数字

    在日常使用Excel时,常会碰到需要提取Excel单元格中数字的情况,如果单纯只是数字,那很简单,但对于文本数字混合的情况,如何提取单元格中的数字呢?本文就给大家详解提取Excel单元格中的数字的方法 ...

  4. Excel批量提取字段信息中的电话号码

    今天我和大家分享的是,Excel批量提取字段信息中的电话号码,详见下面的动图演示.在这里的所有的电话信息均作为例子使用,是虚拟的信息.电话号码包括手机号和固定电话,无论电话号码在文本什么位置都可以提取 ...

  5. R语言str_subset函数和str_which函数:str_subset函数提取字符串向量中所有包含匹配字符的字符串、str_which函数返回字符串向量中所有包含匹配字符的位置(索引)

    R语言str_subset函数和str_which函数:str_subset函数提取字符串向量中所有包含匹配字符的字符串.str_which函数返回字符串向量中所有包含匹配字符的位置(索引) 目录

  6. 从字符串数组中寻找数字的元素

    前几天Insus.NET有写过一篇<从字符串数组中把数字的元素找出来>http://www.cnblogs.com/insus/p/8001026.html 和它的延伸篇<C# yi ...

  7. 判断字符串数组中的数字是否对称

    分析以下需求,并用代码实现: (1)定义数字字符串数组{"010","3223","666","7890987",&qu ...

  8. java 图片识别提取_老司机帮您Java 提取/读取PDF中的图片

    电脑现已成为我们工作.生活和娱乐必不可少的工具了,在使用电脑的过程中,可能会遇到Java 提取/读取PDF中的图片的问题,如果我们遇到了Java 提取/读取PDF中的图片的情况,该怎么处理怎么才能解决 ...

  9. java内部类、接口、集合框架、泛型、工具类、实现类

    一.内部类 1.成员内部类. (1)成员内部类的实例化: 外部类名.内部类名   变量名=外部类对象.new 内部类名(); class Person{class Test{}}Person p=ne ...

最新文章

  1. 数据如何从HBase读到MR
  2. java.lang.IllegalStateException: Failed to load ApplicationContext,这个异常的解决方案
  3. 使用DatagramSocket与DatagramPacket传输数据
  4. 随机数生成器c语言,句子随机生成器-怎么用C语言生成随机数
  5. React开发(168):...dva调用不成功的原因
  6. Java基础知识之方法的通用格式、注意事项与带参数的方法
  7. 寻求生态保护与矿产开发平衡点 青海给出“绿色方案”
  8. 2016.8.27一套简单的题解题报告
  9. PyTorch:损失函数loss function
  10. [2018.11.03 T4] 7w523
  11. android开源系统brvah,Brvah——一个强大的Adapter框架
  12. bin 转hex方法
  13. Ubuntu20.04代理设置
  14. html页面字体美化,网页字体的美化-网页设计,HTML/CSS
  15. unity 陶瓷质感_一种基于Unity3D的虚拟陶瓷设计方法与流程
  16. 不高兴的津津、c++练习
  17. 硬盘变成了raw格式了怎么办?数据还能找回吗
  18. 马丁福勒《UML精粹》读书笔记_第一章
  19. win10电脑日历怎么显示第几周?
  20. linux外挂存储不同,51CTO博客-专业IT技术博客创作平台-技术成就梦想

热门文章

  1. brew update:以下未跟踪的工作树文件将被合并覆盖:
  2. 删除StringBuilder的最后一个字符?
  3. 如何为iPhone 5屏幕分辨率开发或迁移应用程序?
  4. 如何在Android上显示警报对话框?
  5. Win10电脑定时关机无效怎么办
  6. 计算机考试属于相对性评价还是绝对性评价,【易错检测】查漏补缺第46天 — 相对性评价与绝对性评价...
  7. 路径规划之RRT类算法简述
  8. iphone小圆点在哪儿设置_字节推大力教育新品牌;iPhone12跌破发行价;直播打赏将设置冷静期;蚂蚁A股网上申购开启 | Tech日报...
  9. 奥特曼传奇英雄存档丢了怎么找回_热血传奇:法师前期跨级刷怪到底划不划算?...
  10. 洛谷——P2077 红绿灯