美文网首页
获取指令中包含的连续数字

获取指令中包含的连续数字

作者: Brian357 | 来源:发表于2018-03-16 09:02 被阅读0次

import org.apache.commons.lang.StringUtils;

import org.elasticsearch.common.Strings;

import java.util.ArrayList;

import java.util.HashMap;

import java.util.List;

import java.util.Map;

/**

* Created with IntelliJ IDEA

* Created By Brian

* Date: 2018\3\15

* Time: 16:48

* Desc:根据输入的指令,解析出包含的连续数字

* Vesion:

*/

public class ChineseNumbUtils {

private static final MapchineseMap =new HashMap<>();

    private static final ListcommandPrefs =new ArrayList<>();

    static {

chineseMap.put("一", "1");

        chineseMap.put("元", "1");

        chineseMap.put("壹", "1");

        chineseMap.put("二", "2");

        chineseMap.put("贰", "2");

        chineseMap.put("三", "3");

        chineseMap.put("叁", "3");

        chineseMap.put("肆", "4");

        chineseMap.put("四", "4");

        chineseMap.put("五", "5");

        chineseMap.put("伍", "5");

        chineseMap.put("六", "6");

        chineseMap.put("陆", "6");

        chineseMap.put("七", "7");

        chineseMap.put("柒", "7");

        chineseMap.put("八", "8");

        chineseMap.put("捌", "8");

        chineseMap.put("九", "9");

        chineseMap.put("玖", "9");

        chineseMap.put("〇", "0");

        chineseMap.put("零", "0");

        chineseMap.put("○", "0");

        chineseMap.put("十", "10");

        chineseMap.put("什", "10");

        chineseMap.put("佰", "00");

        chineseMap.put("百", "00");

        chineseMap.put("0", "0");

        chineseMap.put("1", "1");

        chineseMap.put("2", "2");

        chineseMap.put("3", "3");

        chineseMap.put("4", "4");

        chineseMap.put("5", "5");

        chineseMap.put("6", "6");

        chineseMap.put("7", "7");

        chineseMap.put("8", "8");

        chineseMap.put("9", "9");

        commandPrefs.add("第");

        commandPrefs.add("下");

        commandPrefs.add("前");

        commandPrefs.add("后");

        commandPrefs.add("上");

    }

private ChineseNumbUtils() {

}

public static Integer getNumber(String value) {

if (StringUtils.isEmpty(value)) {

return null;

        }

final int[] index = {0};

        commandPrefs.stream().filter(value::contains).forEach(

(String c) -> {

int i =value.lastIndexOf(c);

                    if (index[0] <= i) {

index[0] = i;

                    }

}

);

        char c = value.charAt(index[0] +1);

        if (!chineseMap.keySet().contains(String.valueOf(c))) {

return null;

        }

String str = value.substring(index[0] +1, value.length());

        String[] numbs =new String[str.length()];

        for (int i =0; i < str.length(); i++) {

char s = str.charAt(i);

            if (!chineseMap.keySet().contains(String.valueOf(s))) {

break;

            }

String key =String.valueOf(s);

            if ("十".equals(key) ||"什".equals(key)) {

if (i >0) {

numbs[i] ="0";

break;

                }

}

numbs[i] =chineseMap.get(key);

        }

StringBuilder builder =new StringBuilder();

        for (String numb : numbs) {

if (!Strings.isEmpty(numb)) {

builder.append(numb);

            }

}

return Integer.valueOf(builder.toString());

    }

}

相关文章

  • 获取指令中包含的连续数字

    import org.apache.commons.lang.StringUtils; import org.el...

  • C# 连续数字最大连续个数

    需求 [ 1, 2, 3, 4 .... n ] 连续数字中,没有断连的最大长度 获取数组中 1 连续出现的最大次...

  • 统计函数【COUNT】用法,原来是这样的

    COUNT 函数用于计算包含数字的单元格及参数列表中数字的个数,可使用该函数获取数字区域或数组中的数字字段中的项目...

  • 排序问题总结

    简单获取连续的数字 利用goroutine获取连续的数字 利用channel将数组从小到大排序 利用标准库堆(he...

  • Excel技巧之COUNT函数

    COUNT 函数计算包含数字的单元格个数以及参数列表中数字的个数。 使用 COUNT 函数获取区域中或一组数字中的...

  • 统计iOS工程代码行数

    打开终端,cd到工程目录中。 统计包括空格 输入指令【最后一个字母是L不是数字1】 回车,执行--这条指令是获取每...

  • 包含指令

    静态包含: 语法: 动态包含: 与之前的静态包含不同,动态包含语句可以自动区分被包含的页面是静态的还是动态的。如果...

  • 一些正则

    简单手机号 数字+字母组成6位以上 邮箱 连续数字或字母正则获取 (abc, cba, 123, 321) 连续相...

  • 蓝桥杯官网历年真题(51 - 55)

    PREV55 小计算器 题目描述 问题描述模拟程序型计算器,依次输入指令,可能包含的指令有 1. 数字:'NUM ...

  • 获取一个数组中的连续数字

    function fn(arr){var result = [],i = 0;result[i] = [arr[0...

网友评论

      本文标题:获取指令中包含的连续数字

      本文链接:https://www.haomeiwen.com/subject/jfhlqftx.html