`

J2EE工具类:StringUtil.java

阅读更多
package com.worthtech.app.util;

import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;

public class StringUtil {

	private static MessageDigest digest = null;

	/**
	 * 对字符串进行MD5加密
	 * @param data
	 * @return
	 */
	public String hash(String data) {
		if (digest == null)
			try {
				digest = MessageDigest.getInstance("MD5");
			} catch (NoSuchAlgorithmException nsae) {
				System.err.println("Failed to load the MD5 MessageDigest. We will be unable to function normally.");
				nsae.printStackTrace();
			}
		digest.update(data.getBytes());
		return encodeHex(digest.digest());
	}
	private String encodeHex(byte bytes[]) {
		StringBuffer buf = new StringBuffer(bytes.length * 2);
		for (int i = 0; i < bytes.length; i++) {
			if ((bytes[i] & 0xff) < 16)
				buf.append("0");
			buf.append(Long.toString(bytes[i] & 0xff, 16));
		}
		return buf.toString().toUpperCase();
	}
	/**
	 * 在list中查询以prefix开头的子项,返回符合匹配的list
	 * @param list
	 * @param prefix
	 * @return
	 */
	public List getMatches(List list,String prefix) {   
        String prefix_upper = prefix.toUpperCase();   
        List matches = new ArrayList();   
        Iterator iter = list.iterator();   
        while (iter.hasNext()) {   
            String name = (String) iter.next();   
            String name_upper = name.toUpperCase();   
            if (name_upper.startsWith(prefix_upper)) {
                matches.add(name);   
            }   
        }   
        return matches;   
    }

	/**
	 * 统计字符出现次数
	 * @param s
	 */
	public Map<Character, Integer> getStatistics(String s) {  
	        Map<Character, Integer> map = new HashMap<Character, Integer>();  
	        int i, size = s.length();  
	        for (i = 0; i < size; i++) {  
	            char c = s.charAt(i);  
	            map.put(c, map.containsKey(c) ? ((Integer) map.get(c) + 1) : 1);  
	         }  
                return map;
	}

         /**
	 * 将一字符串数组用指定的分隔符接起来
	 * @param array
	 * @param split
	 * @return
	 */
	public String addSplit(String[] array, String split) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < array.length - 1; i++)
			sb.append(array[i] + split);
		sb.append(array[array.length - 1]);
		return sb.toString();
	}
	public static void main(String[] args){
//		StringUtil util=new StringUtil();
	}

/**
     * Encode string to hex string, hex string can use in url
     * @param str
     * @return hex string
     */
    public static String HexEncode(String str) {
    	String hexString = null;
    	if (str != null && str.length() > 0) {
    		char[] digital = "0123456789ABCDEF".toCharArray();
    		StringBuffer sb = new StringBuffer("");
    		try {
    			byte[] bs = str.getBytes("utf-8");
    			int bit;
    			for (int i = 0; i < bs.length; i++) {
    				bit = (bs[i] & 0x0f0) >> 4;
    				sb.append(digital[bit]);
    				bit = bs[i] & 0x0f;
    				sb.append(digital[bit]);
    			}
    		} catch(Exception e) {
    		}
    		hexString = sb.toString();
    	}
    	
    	return hexString;
    }

    /**
     * Decode hex string
     * @param hexString
     * @return
     */
    public static String HexDecode(String hexString) {
    	String str = null;
    	if (hexString != null && hexString.length() > 0) {
    		String digital = "0123456789ABCDEF";
    		char[] hex2char = hexString.toCharArray();
    		byte[] bytes = new byte[hexString.length() / 2];
    		int temp;
    		for (int i = 0; i < bytes.length; i++) {
    			temp = digital.indexOf(hex2char[2 * i]) * 16;
    			temp += digital.indexOf(hex2char[2 * i + 1]);
    			bytes[i] = (byte)(temp & 0xff);
    		}
    		try {
    			str = new String(bytes, "utf-8");
    		} catch (Exception e) {
    		}
    	}
    	return str;
    }
    
    /**
     * judge a string is null or empty
     * @param str
     * @return return true if str is null or empty, otherwise false 
     */
    public static boolean isEmpty(String str) {
    	return (str == null || str.length() == 0); 
    }
/**
*将多余的文字用...代替(length为双字节,比如length=18,表示9个汉字)
*/
public static String getLimitLengthString(String str, int length) {
		String view = null;
		int counterOfDoubleByte = 0;
		byte b[];
		if (str == null) {
			return "";
		} else {
			try {
				b = str.getBytes("GBK");
				if (b.length <= length)
					return str;
				for (int i = 0; i < length; i++) {
					if (b[i] > 0)
						counterOfDoubleByte++;
				}
				if (counterOfDoubleByte % 2 == 0)
					view = new String(b, 0, length, "GBK") + "...";
				else
					view = new String(b, 0, length - 1, "GBK") + "...";
			} catch (Exception e) {
				e.printStackTrace();
			}
			return view;
		}
	}
//身份证效验规则
//http://since2006.com/blog/chinese-id-verify/
    public boolean isIdCard(String arrIdCard) {
        int sigma = 0;
        Integer[] a = {7, 9, 10, 5, 8, 4, 2, 1, 6, 3, 7, 9, 10, 5, 8, 4, 2};
        String[] w = {"1", "0", "X", "9", "8", "7", "6", "5", "4", "3", "2"};
        for (int i = 0; i < 17; i++) {
            int ai = Integer.parseInt(arrIdCard.substring(i, i + 1));
            int wi = a[i];
            sigma += ai * wi;
        }
        int number = sigma % 11;
        String check_number = w[number];
        //return check_number;
        //System.out.println(check_number);
        if (!arrIdCard.substring(17).equals(check_number)) {
            return false;
        } else {
            return true;
        }
    }

}

分享到:
评论

相关推荐

    Java api 参考书

    2. **集合框架**:由`java.util`包提供,包括`List`、`Set`、`Map`接口及其实现,如`ArrayList`、`HashSet`、`HashMap`等,它们是数据存储和组织的关键工具。 3. **输入/输出**:`java.io`包包含各种流类,如`...

    JavaUtils:A collection of utils to develop Java. —— Java 常用工具类整合

    JavaUtils A collection of some common tools ...src/com.cnblogs.honoka.utils.StringUtil.java:字符串处理工具类 src/com.cnblogs.honoka.utils.ToolsUtil.java:常用功能工具类 src/com.cnblogs.honoka.utils.Da

    J2EE项目工程代码编写规范

    - **全局工具类所在包命名规范**:采用`公司名称.开发组名称.项目名称.util`的格式。 - 示例:`net.linkcn.util` #### 四、类命名规范 1. **基本命名规范**:类名应以大写字母开头,如果有多个单词,则每个单词首...

    Java2 类库

    4. **多线程**:Java 2引入了更强大的多线程支持,`java.lang.Thread`和`java.util.concurrent`包提供了创建、管理和同步线程的工具。 5. **网络编程**:`java.net`包包含了处理网络连接和协议的类,使得Java程序能...

    java 学习要点总结

    6. java.util:包含一些实用工具类和数据结构类。 java 的移位运算符: 1. 左移 &lt;&lt;:带符号右移。 2. 右移 &gt;&gt;:无符号右移。 3. 无符号右移 &gt;&gt;&gt;。 java 中的数组: 1. java 中一维数组在定义的时候是不能够分配...

    JAVA API+JAVA EE API 参考文档

    2. **集合框架**: `java.util`包下的`ArrayList`、`LinkedList`、`HashMap`、`HashSet`等类提供了数据存储和操作的高效工具。 3. **多线程**: `java.lang.Thread`和`java.util.concurrent`包提供了线程管理和并发...

    Java EE项目代码编写规范

    - **全局工具类所在包**:`net.linkcn.web.crm.util` #### 三、类命名规范 类命名规范旨在通过一致的命名方式提高代码的可读性和可维护性。 - **基本命名规范** - **类与接口**:以大写字母开头,每个单词首...

    JavaEE命名规范

    - **全局工具类**: `公司名称.开发组名称.项目名称.util` - 示例: `net.linkcn.util` #### 五、类命名规范 - **基本命名规则**: - 类和接口的命名应以大写字母开头,若有多个单词,则每个单词的首字母均需大写。 ...

    Java选择题武汉大学JAVA基础.pdf

    涉及到数组、字符串(String),以及Java标准库中的一些数据结构如java.util.Data、java.util.Calendar、java.util.Time和java.util.Date等。 9. Java Applet 和 Java Application Java Applet是运行在浏览器中的小...

    JAVA J2EE基础 面试题汇总

    import java.util.*; // 导入必要的类或包 public class ClassName { // 类声明 // 属性定义 // 方法定义 public ClassName() { // 构造方法 // 初始化逻辑 } public static void main(String[] args) { // 主...

    XFire快速上手

    - `src-util`:工具类或辅助类存放处。 - `web`:Web应用程序的主要目录,包括`WEB-INF`子目录和相关的`.html`或`.jsp`页面。 具体的目录和文件结构如下所示: ``` webservice └── src-service ├── ...

    JAVA程序员笔试题

    - **日期和时间**:`java.util.Calendar`和`java.time`包提供获取日期和时间的方法,`System.currentTimeMillis()`获取从1970年开始的毫秒数,`LocalDate`和`LocalTime`类可方便地处理日期和时间。 2. **数组和...

    总结J2EE中使用任务调度三种方式

    Java标准库提供了`java.util.Timer`类和`java.util.TimerTask`类,用于在后台线程中安排一次性或周期性任务。以下是如何使用这两个类的一个简单示例: ```java import java.util.Timer; import java.util.TimerTask...

    java和javax的区别

    1. **java.lang**:提供了一些核心类,如`String`、`Integer`等。 2. **java.util**:提供了集合框架,如`List`、`Set`、`Map`等。 3. **java.io**:提供了文件I/O相关的类,如`FileInputStream`、`...

    Java学习思路.pdf

    1. 基本类型库:包括java.lang包中的基本类型类(如String、Math等)、java.io包中的输入输出类、java.util包中的集合框架类等。 2. 网络编程:***包提供了一组类和接口,用于网络编程,实现客户端和服务器端的通信...

    最新版JAVA程序员面试题

    - java.util:包含了Java的基础数据结构类、工具类等,如ArrayList、HashMap、Comparator等。 针对Java程序员的面试,面试官通常会围绕Java基础、JDK新特性、Java集合框架、多线程并发编程、JVM性能调优等主题展开...

    Java编程指南.ppt

    import java.util.Date; public class Demo1 { public static void main(String[] args) { System.out.print("你好,今天是 "); System.out.println(new Date()); } } ``` 5. Java程序基本结构: - package...

    ECSide最新文档

    import java.util.List; import org.shen.ec.vo.Note; public interface NoteDAO { List&lt;Note&gt; getAllNotes(); Note getNoteById(int id); void addNote(Note note); void updateNote(Note note); void ...

    Java复习---思考题

    - `java.util`:包含各种实用工具类,如集合框架、日期时间、随机数等。 - `java.io`:提供输入输出流处理,支持文件操作和网络通信。 - `java.awt`:图形用户界面(GUI)类库,用于创建窗口和控件。 - `java...

Global site tag (gtag.js) - Google Analytics