`

匹配字符串中的连续多少位数字

 
阅读更多
package com.zte.xh.fund.util;

import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import java.util.Map.Entry;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

import com.jfinal.plugin.activerecord.Record;
import com.mysql.jdbc.StringUtils;
import com.zte.xh.fund.model.FundFinance;

/**
 * 对账的工具类
 * 
 * @author Jay_Lee
 *
 */
public class CheckoutUtil {
	/**
	 * 匹配出字符串中的6,8,10位Id
	 * 
	 * @param str
	 * @return
	 */
	public static String matchId(String str) {
		// 匹配6,8,10位的工号
		String regEx = null;
		Pattern p = null;
		Matcher m = null;
		String result = null;
		// 首先匹配10位的
		regEx = "[0-9]{10}";
		p = Pattern.compile(regEx);
		m = p.matcher(str);
		while (m.find()) {
			result = m.group();
		}
		// 如果10位的为空就匹配8位的
		if (StringUtils.isNullOrEmpty(result)) {
			regEx = "[0-9]{8}";
			p = Pattern.compile(regEx);
			m = p.matcher(str);
			while (m.find()) {
				result = m.group();
			}
		}
		// 如果8位为空,就匹配6位
		if (StringUtils.isNullOrEmpty(result)) {
			regEx = "[0-9]{6}";
			p = Pattern.compile(regEx);
			m = p.matcher(str);
			while (m.find()) {
				result = m.group();
			}
			// 6位的工号,在第1位后面加2个0,补齐成新工号
			if (!StringUtils.isNullOrEmpty(result)) {
				String start = result.substring(0, 1);
				String end = result.substring(1, result.length());
				result = start + "00" + end;
			}
		}
		return StringUtils.isNullOrEmpty(result) ? "" : result;
	}

	/**
	 * 发现相同的工号,便于合并
	 * 
	 * @param records
	 * @return
	 */
	public static List<List<Integer>> findRepeat(List<Record> records) {
		List<List<Integer>> result = new ArrayList<List<Integer>>();
		String demp = "";
		for (int i = 0; i < records.size(); i++) {
			String[] demps = demp.split(",");
			if (breakFor(demps, i)) {
				continue;
			}
			List<Integer> result_ = new ArrayList<Integer>();
			String startTemp = records.get(i).get("userId");
			if (startTemp == null || startTemp.length() <= 0) {
				continue;
			}
			result_.add(i);
			for (int j = i + 1; j < records.size(); j++) {
				if (breakFor(demps, j)) {
					continue;
				}
				String endTemp = records.get(j).get("userId");
				if (startTemp.equals(endTemp)) {
					result_.add(j);
					demp += (j + ",");
				}
			}
			if (result_.size() > 1) {
				result.add(result_);
			}
		}
		return result;
	}

	/**
	 * 验证数组中是否包含了某个数据
	 * 
	 * @param strs
	 * @param i
	 * @return
	 */
	public static boolean breakFor(String[] strs, int i) {
		for (String s : strs) {
			if (s.equals(String.valueOf(i))) {
				return true;
			}
		}
		return false;
	}

	/**
	 * 把list转换成string,string的形式
	 * 
	 * @param list
	 * @return
	 */
	public static String listToString(List<?> list) {
		String result = "";
		for (Object str : list) {
			result += String.valueOf(str) + ",";
		}
		result = result.substring(0, result.length() - 1);
		return result;
	}

	/**
	 * 算出map对应的value的和
	 * 
	 * @param map
	 * @return
	 */
	public static String getAccount(Map<Integer, String> map) {
		double d = 0;
		for (Entry<Integer, String> entry : map.entrySet()) {
			d += Double.valueOf(StringUtils.isNullOrEmpty(entry.getValue())?"0":entry.getValue());
		}
		return String.valueOf(d);
	}

	/**
	 * 格式化金额。把20000.00按照万为单位格式化为2
	 * 
	 * @param money
	 * @return
	 */
	public static String formatMoney(String money) {
		int i = money.indexOf(".");//i=-1表示不存在
		String result = null;
		if(i!=-1){
			result = money.substring(0, money.indexOf("."));
			if(result.equals("0")){
				result = "0";
			}else{
				result=result.substring(0, result.length() - 4);
			}
		}else{
			if(money.equals("0")){
				result = "0";
			}else{
				result = money.substring(0, money.length() - 4);
			}
			
		}
		return result;
	}
	
	/**
	 * 初始化fund,因为数据库表不能为null,在此做共有的初始化
	 */
	public static void initFund(FundFinance fFinance){
		fFinance.set("user_name", "");
		fFinance.set("cert_id", "");
		fFinance.set("tel", "");
		fFinance.set("count", 0);
		fFinance.set("k_name", "");
		fFinance.set("bank_name", "");
		fFinance.set("bank_num", "");
		// 3表示已提交登记
		fFinance.set("status", "3");
		// 下面的都不知道是什么.又不能为空
		fFinance.set("add_time", System.currentTimeMillis());
		fFinance.set("s_time", "");
		fFinance.set("shenming", "");
		fFinance.set("z_name", "");
		fFinance.set("his_shouyi", 0);
		fFinance.set("z_num", "");
		fFinance.set("images", "");
		fFinance.set("images2", "");
		fFinance.set("user_pay_time", 0);
		fFinance.set("pay_message", "");
		fFinance.set("sure_info", "");
		fFinance.set("p_beizhu", "");
		fFinance.set("cancel_time", 0);
		fFinance.set("cancel_info", "");
		fFinance.set("update_time", 0);
		fFinance.set("update_info", "");
		fFinance.set("s_time", 0);
	}
	/**
	 * 测试方法
	 * 
	 * @param args
	 */
	public static void main(String[] args) {
		/*
		 * String test = "行内汇入 001娄卫华  娄卫华 +123456+ 爱心理财"; List<Integer> testL =
		 * new ArrayList<Integer>(); testL.add(1); testL.add(2); testL.add(3);
		 * testL.add(5); Map<Integer, String> map = new HashMap<Integer,
		 * String>(); map.put(1, "30000.0"); map.put(2, "50000.0"); map.put(3,
		 * "30000.0"); System.out.println(getAccount(map));
		 * System.out.println(listToString(testL));
		 * System.out.println(matchId(test));
		 */
	/*	String s = "11111,11111,";
		s = s.substring(0,s.length()-1);
		System.out.println(s);*/
		System.out.println(formatMoney("200000"));
	}
}
分享到:
评论

相关推荐

    正则表达式匹配重复字符

    匹配3个连续的相同字符的正则表达式写法。和验证是否是连续数字或字母的js写法。

    多字节支持的字符串操纵的php库.zip

    在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一...

    PHP匹配连续的数字或字母的正则表达式

    (\w:反斜杠小写w)用于匹配字母,数字或下划线字符; (\W:反斜杠大写W)用于匹配所有与\w不匹配的字符; 元字符包括: +, *,? 元字符理解起来容易混淆,所以我在后面做了代码结果截图 代码如下: “+”元字符...

    把整数生成唯一字符串的PHP库.zip

    在程序设计中,字符串(string)为符号或数值的一个连续序列,如符号串(一串字符)或二进制数字串(一串二进制数字)。通常以串的整体作为操作对象,如:在串中查找某个子串、求取一个子串、在串的某个位置上插入一...

    Python正则表达式如何匹配中文

    匹配字符串中的第一个连续的中文片段 匹配字符串中的所有中文字符 注:要确保正则字符和匹配文本是 unicode 范围内的编码。 其他 扩充 范围 几个主要非英文语系字符范围: 2E80~33FFh:中日韩符号区。收容康熙...

    正则表达式实现手机号中间4位数隐藏或者只显示末尾四位数

    此段正则匹配字符串中的连续11位数字,替换中间4位为*号,输出常见的隐匿手机号的格式。 如果要仅得到末尾4位,则可以改成如下形式: // 匹配连续11位数字,并替换其中的前7位为*号 '15110280327'.replace(/\d{7}(\...

    正则表达式 正则表达式

    断是否有6个连续数字的字符串 \d{6} 搜素包含cat的字符串 cat 找出三个字母的单词,而且这些单词必须以“t”字母开头,以“n”字母结束。 t.n 它匹配“tan”、“ten”、“tin”和“ton”,还匹配“t#n”、“tpn”...

    经典之dos命令特殊字符含义

    在set中表示使用扩展环境变量指定位置的字符串; 在set/a中表示按位取反。 % \\使用两个%包含一个字符串表示引用环境变量。比如一个%time%可以扩展到当前的系统时间; 单个%紧跟0-9的一个数字表示引用命令行参数; ...

    2Java SE(上).doc

    首先该方法会使用给定的字符串与当前字符串进行全匹配,当找到位置后,会将给 定字符串中第一个字符在当前字符串中的位置返回。常用来查找关键字使用。 重载方法: int lastIndexOf(String str):返回给定的...

    正则表达式30分钟入门教程

    ^ 匹配字符串的开始 $ 匹配字符串的结束 正则表达式引擎通常会提供一个“测试指定的字符串是否匹配一个正则表达式”的方法,如JavaScript里的RegExp.test()方法或.NET里的Regex.IsMatch()方法。这里的匹配是指是字符...

    java 正则表达式

    只能输入由数字和26个英文字母组成的字符串:"^[A-Za-z0-9]+$"。只能输入由数字、26个英文字母或者下划线组成的字符串:"^\w+$"。验证用户密码:"^[a-zA-Z]\w{5,17}$"正确格式为:以字母开头,长度在6~18之间,只能...

    正则表达式

    /\s+java\s+/ //匹配字符串"java" ,并且该串前后可以有一个或多个空格. /[^"] * / //匹配零个或多个非引号字符. 正则表达式的复制字符 字符 含义 ________________________________________________________...

    Java-PHP-C#

    "ab*": 匹配字符串a和0个或者更多b组成的字符串("a", "ab", "abbb", etc.); "ab+": 和上面一样,但最少有一个b ("ab", "abbb", etc.); "ab?":匹配0个或者一个b; "a?b+$": 匹配以一个或者0个a再加上一个以上的b...

    javascript文档

    lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastIndexOf 方法 返回在 String 对象中最后出现子字符串的位置。 lastMatch 属性 ($) 从任何正则表达式搜索中返回最后匹配的字符。 lastParen...

    《剑指Offer》题目及代码.zip

    《剑指Offer》 1. 赋值运算函数 2. 单例设计模式 3. 二维数组中查找目标值 4. 替换字符串中的空格 5. 从尾到头打印链表 ... 数据流中的中位数 65. 滑动窗口的最大值 66. 矩阵中的路径 67. 机器人的运动范围

    LeetCode解题总结

    1.3 寻找两个排序数组的中位数 1.4 最长连续序列 1.5 累加和 1.6 移除数组中指定值 1.7 下一个排列 1.8 第n个全排列 1.9 验证数独的正确性 1.10 容纳雨水的量 1.11 旋转图像 1.12 数字加1 1.13 爬楼梯 1.14 格雷码 ...

    钢条切割问题leetcode-Basic_Algorithms:算法导论的python代码

    最大连续字符串 字符串压缩 最短路径和 路径总数 最长等差数列 组合硬币数量 最少完全平方数 组合总和 梯度下降算法演示 PageRank迭代算法演示 求数组和为某个值的方法数 判断一个字符串是否可以分割 求两个数字之和

    正则表达式(括号)、[中括号]、{大括号}的区别小结

    表达式中有几个()就有几个相应的匹配字符串。 (\s*)表示连续空格的字符串。 []是定义匹配的字符范围。比如 [a-zA-Z0-9] 表示相应位置的字符要匹配英文字符和数字。[\s*]表示空格或者*号。 {}一般用来表示匹配的长度...

    JScript 语言参考

    lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastIndexOf 方法 返回在 String 对象中最后出现子字符串的位置。 lastMatch 属性 ($) 从任何正则表达式搜索中返回最后匹配的字符。 lastParen...

    微软JavaScript手册

    lastIndex 属性 返回在字符串中找到的最后一个成功匹配的字符位置。 lastIndexOf 方法 返回在 String 对象中最后出现子字符串的位置。 lastMatch 属性 ($) 从任何正则表达式搜索中返回最后匹配的字符。 lastParen...

Global site tag (gtag.js) - Google Analytics