`

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

 
阅读更多
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"));
	}
}
分享到:
评论

相关推荐

    在字符串中找出连续最长的数字串+

    "在字符串中找出连续最长的数字串并输出最长的字符串长度"这个问题是字符串处理中的一个经典实例,它涉及到字符串遍历、模式匹配和动态规划等概念。 首先,我们需要理解问题的核心:在给定的字符串中寻找连续的数字...

    将数字从字符串中提取

    本示例的主题是“将数字从字符串中提取”,这是一个常见的需求,特别是在数据分析、文本处理或日志分析等场景。以下我们将深入探讨如何实现这个功能,并结合源码进行讨论。 首先,我们要了解字符串的基本操作。在...

    VB6.0从一串字符中只提取数字

    如果字符串中的数字连续且无其他干扰字符,自定义逻辑可能更为简单;而如果字符串中数字的格式复杂,包含多种可能的情况,那么正则表达式会更强大、灵活。 在提供的压缩包文件中,"从一串字符中取数字函数"可能是...

    获取字符串中的数字(两种方法)

    第二种方法是利用正则表达式来匹配和提取字符串中的数字。这种方法更加简洁且易于理解,适用于复杂的匹配场景。 #### 2. 实现步骤 - 使用`Regex`类的`Matches`方法匹配所有数字。 - 将匹配到的数字组合成一个新的...

    Python正则表达式匹配字符串中的数字

    在使用Python正则表达式来匹配字符串中的数字时,“\d+”能够匹配文本中所有连续的数字序列,但包括那些与非数字字符混合的部分。而“r"\b\d+\b"”则能够仅匹配独立的纯数字序列,避免将非数字字符包含进来。在编写...

    正则匹配字符串中Ip

    1. **方法调用**: 方法接受一个字符串参数`pString`并返回该字符串中找到的IP地址。 2. **正则替换**: 使用`replaceAll`方法来应用正则表达式,并通过`$1`引用匹配到的第一个捕获组,即IP地址本身。 3. **条件判断**...

    查找连续的字符串-百度笔试题

    题目要求实现一个程序,能够在一个给定的字符串中找到所有连续的数字序列,并最终输出最长的连续数字串。 #### 题目分析 题目中的示例代码提供了一个基础的解决方案,但存在一些问题需要改进和完善: 1. **正则...

    java获取字符串内全部数字

    通过调用`matcher.find()`,我们可以遍历字符串中所有匹配的数字,并使用`matcher.group()`获取当前匹配的数字。 此外,我们还可以使用`replaceAll`方法替换所有匹配的数字,或者使用`split`方法根据数字分割字符串...

    C#字符串删除指定字符串|字符串删除子字符串

    在C#编程语言中,处理字符串是常见的任务之一,其中包括删除字符串中的特定部分或子字符串。本篇文章将详细探讨如何在C#中实现这一功能,包括多种方法和实用技巧。 首先,C#提供了多种内置方法来操作字符串,比如`...

    使用正则表达式匹配字符串数据PPT学习教案.pptx

    1. **正则表达式概述**:正则表达式(Regular Expression)是一种描述字符串模式的语言,它由一系列元字符和操作符组成,用于在文本中查找、替换或提取特定格式的字符串。正确构建正则表达式是其有效性的关键,错误...

    Java中字符串中连续相同字符去重方法

    4. 使用`Matcher`对象`m`来匹配字符串`str`中的模式。 5. 在`while`循环中,通过调用`m.find()`方法来查找所有匹配的子串。每次找到匹配时,都会调用`m.group().subSequence(0, 1)`获取第一个匹配的字符,并将其添加...

    在一个字符串中查找子串的个数

    如果找到了匹配项,则返回子字符串的第一个字符在当前字符串中的索引位置;如果没有找到,则返回 -1。 #### 2.2 参数说明 `indexOf()` 方法可以接受一个或两个参数: - **单参数**:`indexOf(String str)` - 只提供...

    js判断是否有6个连续数字的字符串的正则

    在上面的代码中,`pattern` 是一个 `RegExp` 对象,它匹配任何包含连续6个数字的字符串。`test()` 方法将测试字符串 `str` 是否匹配该正则表达式。如果匹配,返回 `true`,否则返回 `false`。 使用 JavaScript 函数...

    PowerShell中使用正则表达式匹配字符串实例

    如果正则表达式模式更具体一些,例如$pattern="abc(\d{3})",那么PowerShell不仅会匹配字符串中任何连续的三个数字,还会考虑它们前面是否有一个"abc"前缀。在这种情况下,$matches[0]会包含整个匹配的字符串"abc123...

    在文本中查找替换字符串程序

    正则表达式是一种强大的模式匹配工具,能够处理复杂的查找和替换需求,例如匹配连续数字、邮箱地址等。 在实际使用过程中,用户可能需要通过一个简洁的用户界面(UI)输入要查找和替换的字符串,以及选择相应的选项...

    Java通过正则表达式获取字符串中数字的方法示例

    当需要从字符串中提取数字时,正则表达式是首选的方法之一。本篇文章将详细讲解如何使用Java和正则表达式来获取字符串中的数字。 首先,我们需要了解Java中的`java.util.regex`包,这个包提供了`Pattern`和`Matcher...

    c++在数字串中查找数字

    在`NumberSearcher`类中,`findSingleDigit`函数可以遍历字符串,检查每个字符是否与目标数字字符匹配。可以使用`std::string::find_first_of`或`std::string::find_last_of`来查找特定字符。而`findNumber`函数则...

    js实现在字符串中提取数字

    1. **正则表达式**:正则表达式是用于匹配字符串模式的强大工具。在这个例子中,`/[^0-9]/ig` 的含义如下: - `[^0-9]` 表示匹配任何不是数字(0到9)的字符。`^` 在方括号内表示否定匹配。 - `/i` 是修饰符,表示...

    在一个以知的字符串中截取满足一定条件的字符串

    - **子字符串**:是原字符串中的连续字符序列。 #### 2.2 .substring() 方法 `.substring()` 是 Java 和其他许多编程语言中提供的内置方法之一,用于从字符串中截取出子字符串。其基本语法为: ```java String ...

Global site tag (gtag.js) - Google Analytics