package com.jm.label.tools;

import java.util.Map;
import java.util.TreeMap;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
/**
 * 读取字符串中的数字和小数
 * @author JM.H
 *
 */
public class DigitUtil {

public static String getNumber(String str){
        Pattern p = Pattern.compile("(\\d+)");
        Matcher m = p.matcher(str); String result = "";
        if (m.find()) {
            Map<Integer, String> map = new TreeMap<Integer, String>();
            Pattern p2 = Pattern.compile("(\\d+\\.\\d+)");
            m = p2.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()); } //遍历整数
            Pattern p3 = Pattern.compile("(\\d+)");
            m = p3.matcher(str);
            while (m.find()) {
                result = m.group(1) == null ? "" : m.group(1); int i = str.indexOf(result); //排除jia567.23.23在第一轮过滤之后留下来的jia.23对整数23产生干扰
//                System.out.println(String.valueOf(str.charAt(i)));
                if (String.valueOf(str.charAt(i)).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 = "";
        }
//        System.out.println(result);
        String[] split = result.split(","); //
        String resultRtr = split[split.length-1]; //
        return resultRtr;
    }
}

转载于:https://www.cnblogs.com/java-h/p/10583986.html

读取字符串中的数字和小数相关推荐

  1. C++ 小功能算法模板:读取字符串中的数字

    读取字符串中的数字 #include <iostream> #include <vector> #include <string> #include <cst ...

  2. C++读取字符串中的数字的方法

    代码实例: #include <iostream> #include <sstream> #include <fstream> using namespace st ...

  3. Java提取字符串中的数字和小数

    从网上找的代码如下: //取字符串中的数字public String checkNum(String str) { // String str = "abcd123和345.56jia567 ...

  4. 正则匹配——python用一个正则表达式从字符串中提取数字(包括整数、小数、正负数)

    import re# 从字符串中提取数字 totalCount = '-100,abc2.4-123s,d-1ds-0.234as123.2s1.3bb.24' count = re.findall( ...

  5. java读取字符串中数字

    java从字符串中提取数字 随便给你一个含有数字的字符串,比如: String s="eert343dfg56756dtry66fggg89dfgf"; 那我们如何把其中的数字提取 ...

  6. python正则表达式提取数字比较好_python正则表达式从字符串中提取数字的思路详解...

    python从字符串中提取数字 使用正则表达式,用法如下: ## 总结 ## ^ 匹配字符串的开始. ## $ 匹配字符串的结尾. ## \b 匹配一个单词的边界. ## \d 匹配任意数字. ## ...

  7. python字符串数字求和_python处理字符串:将字符串中的数字相加求和

    原博文 2018-07-27 23:15 − 计算字符串中所有数字的和,字符串中有数字和字母组合而成如果出现连续数字,按照一个数操作具体解释在代码行里: def sum_str(str1): len1 ...

  8. Bailian2888 字符串中的数字【字符串】

    字符串中的数字 总时间限制: 1000ms 内存限制: 65536kB 描述 输入一个字符串,长度不超过20,字符串中包含数字和非数字字符,将其中是数字的字符提取出来,对它们进行从小到大排序,非数字字 ...

  9. C#正则匹配(提取字符串中的数字)及C#“四舍五入”

    本篇文章介绍一个正则小实例,使用C#语法正则匹配字符串中的数字,提取出来.并介绍一下,C# 数字计算中的"四舍五入". C#正则匹配数字 一下是提取字符串中数字(包含小数)的实例代 ...

最新文章

  1. Bootstrap中默认表单的创建
  2. 模态框在IE下的问题,即position:fixed在IE下不兼容的处理方式
  3. 使用过滤统计信息解决基数预估错误
  4. Linux常用命令(第二版) --Shell应用技巧
  5. phpcmsV9 关于phpcms根目录下ico图标,改了没效果的解决办法?
  6. Java面试之五大框架的理解
  7. 消息中间件学习总结(13)——Kafka与RocketMQ的单机系统可靠性比较分析
  8. 如何禁止特定用户使用sqlplus或PL/SQL Developer等工具登陆?
  9. linux 脚本 格式化,Shell脚本批量格式化文件名
  10. MATLAB中范数norm()函数精讲
  11. Hadoop详解(二)——HDFS的命令,执行过程,Java接口,原理详解。RPC机制
  12. Windows C语言开发环境实践
  13. arduino智能闹钟_要写一个Arduino的电子闹钟程序,板子是Arduino UNO,和一个实时钟的芯片DS1307,开发环境是Arduino-1.0.2...
  14. 百度富文本编辑器php设置图片上传,手把手教你百度富文本编辑器的相关配置包括图片上传(for jsp)...
  15. 小草音乐播放器[emlog插件]
  16. 使用navicat进行mysql数据库拷贝
  17. 电脑连接上WiFi但是上不了网
  18. shell常用语法之if [ $? -ne 0 ]
  19. 生成式模型与辨别式模型
  20. 正式环境使用Mysql MGR集群部署(一看就会)

热门文章

  1. imx6 mac地址设置
  2. dialog像父activity传递参数
  3. LVS原理介绍及安装过程
  4. 如何利用Shader来渲染游戏中的3D角色
  5. 4 开发MapReduce应用程序
  6. 类的转换函数调用的优先级与是否用const修饰的关系
  7. java的垃圾回收机制包括:主流回收算法和收集器(jvm的一个主要优化方向)
  8. javascript消除字符串两边空格的两种方式,面向对象和函数式编程。python oop在调用时候的优点...
  9. spring 之 property-placeholder 分析
  10. 关于img 403 forbidden的一些思考