如何判断一个字符串是否仅由数字or仅由数字英文字符or仅由汉字组成

package cn.edu.hnnu.c.rentacar.util;

import java.util.regex.Matcher;
import java.util.regex.Pattern;

public class StringUtil {
    private StringUtil() {

    }

    // 判断一个字符串是否为空
    public static boolean isNull(String str) {
        if (str == null || str.trim().equals("")) {
            return true;
        } else {
            return false;
        }
    }

    // 判断一个字符串是否为仅由数字字符组成
    public static boolean isDigit(String str) {
        if (StringUtil.isNull(str)) {
            return false;
        }
        char[] charArray = str.toCharArray();
        int count = 0;
        for (int i = 0; i < charArray.length; i++) {
            if (charArray[i] >= 0x30 && charArray[i] <= 0x39) {
                count++;
            }
        }
        if (count == charArray.length) {
            return true;
        } else {
            return false;
        }
    }

    // 判断一个字符串是否仅由大小写英文字母或数字组成

    public static boolean isLetterOrDigit(String str) {
        if (StringUtil.isNull(str)) {
            return false;
        }
        char[] charArray = str.toCharArray();
        int count = 0;
        for (int i = 0; i < charArray.length; i++) {
            if ((charArray[i] >= 0x30 && charArray[i] <= 0x39)
                    || (charArray[i] >= 0x61 && charArray[i] <= 0x7a)
                    || charArray[i] >= 0x41 && charArray[i] <= 0x5a) {
                count++;
            }
        }
        if (count == charArray.length) {
            return true;
        } else {
            return false;
        }
    }

    // 判断一个字符串是否仅由汉字组成
    public static boolean isChineseCharacters(String str) {
        if (StringUtil.isNull(str)) {
            return false;
        }
        char[] chars = str.toCharArray();
        int count = 0;
        for (int i = 0; i < chars.length; i++) {
            String test = chars[i] + "";
            if (test.getBytes().length == test.length()) {
                // 不是汉字,特殊字符
                count--;
            } else {
                // 汉字或特殊字符
                count++;
            }

        }
        if (count == str.length()) {
            // 该字符串只有汉字或特殊字符
            return StringUtil.isChineseCharNotSpecialChar(str);

        } else {
            return false;
        }
    }

    // 该方法私有,仅供内部调用
    private static boolean isChineseCharNotSpecialChar(String str) {
        // str只有汉字和特殊字符
        String regEx = "[\\u4e00-\\u9fa5]";
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(str);
        String newstr = "";
        while (m.find()) {
            newstr = newstr + m.group(0);
        }
        if (newstr.length() == str.length()) {
            // 汉字
            return true;
        } else {
            // 特殊字符
            return false;
        }
    }

}

posted @ 2012-10-31 09:10  smile看风云  阅读(667)  评论(0编辑  收藏  举报