StringHelper--封转自己的字符串工具类

我们每次开发项目,都会有很多的关于字符串的处理,字符串的处理太常见了,无法避免,那么这时如果可以把常用的字符串处理封装成类,在以后的开发中应该会减少一些工作量,下面代码对一些常用的字符串处理进行了封装,如果遇上了其他的关于字符串处理可以不断加入进来。

现在已经实现的功能有:

1,判断一个字符串是否为 null 或 空串 或 空白,

2,判断一个字符串是否不是null且不是空串、不是空白,

3,判断一个字符串变量是否为 null,

4,判断一个字符串是否为 空串,

5,比较两个非空(不是null,不是空串、不是空白)字符串是否"相等",

6,比较两个字符串是否 "相等",

7,随机生成一个 32 位长度的 字符串( UUID ),

8,通过 SHA1 对字符串进行加密,

9,对 给定字符串 进行 md5 加密,(对密码进行加密使用)

10,检测邮箱合法性,

11,Double进行四舍五入,得到指定位数的小数,

12,根据Unicode编码完美的判断中文汉字和符号,

13,判断是否包含中文汉字,

14判断是否只有中文汉字,

15判断邮政编码.

代码有详细备注,不做说明。如下:

public final class StringHelper {

	/**
	 * 判断一个字符串是否为 null 或 空串 或 空白
	 * @param source 需要判断的字符串
	 * @return 当字符串为 null 或 为 空白、空串 时返回 true
	 */
	public static boolean empty( String source ) {
		return source == null || source.trim().isEmpty()  ;
	}

	/**
	 * 判断一个字符串是否不是null且不是空串、不是空白
	 * @param source 需要判断的字符串
	 * @return 当 字符串是不是null且不是空串也不是空白时返回 true
	 */
	public static boolean notEmpty( String source ) {
		return source != null && source.trim().length() > 0 ;
	}

	/**
	 * 判断一个字符串变量是否为 null
	 * @param source 需要判断的字符串
	 * @return 当 字符串变量 为 null 时返回 true
	 */
	public static boolean isNull( String source ) {
		return source == null ;
	}

	/**
	 * 判断一个字符串是否为 空串
	 * @param source 需要判断的字符串
	 * @return 当字符串中的值是 空串 或 空白 串时返回 true
	 */
	public static boolean emptyString( String source ) {
		return ( source != null ) && source.length() == source.trim().length() ;
	}

	/**
	 * 判断一个字符串是否为 空白 串
	 * @param source 需要判断的字符串
	 * @return 当字符串中的值是 空白 串时返回 true
	 */
	public static boolean blank( String source ){
		return ( source != null ) && source.length() > source.trim().length()  ;
	}

	/**
	 * 比较两个非空(不是null,不是空串、不是空白)字符串是否"相等"
	 * @param one 第一个需要比较的字符串
	 * @param theOther 另一个参与比较的字符串
	 * @return 当 两个字符串 都不为空串 且 内容完全一致 (剔除首尾空白后、大小写也一致)时返回 true
	 */
	public static boolean equals( String one , String theOther) {
		return equals(one, theOther,true,false);
	}

	/**
	 * 比较两个字符串是否 "相等"
	 * @param one 参与比较的第一个字符串
	 * @param theOther 参与比较的另一个字符串
	 * @param escapeSpace 是否需要剔除首尾空白 ( true 表示需要剔除首尾空白,false 表示不剔除 )
	 * @param ignoreCase 是否忽略大小写 ( true 表示忽略大小写 ,false 表示不忽略大小写 )
	 * @return
	 */
	public static boolean equals( String one , String theOther , boolean escapeSpace , boolean ignoreCase) {

		if( one == null || theOther == null ){
			return false ;
		}

		if( escapeSpace ){
			one = one.trim();
			theOther = theOther.trim();
		}

		return ignoreCase ? one.equalsIgnoreCase( theOther ) : one.equals( theOther ) ;
	}

	/**
	 * 随机生成一个 32 位长度的 字符串( UUID )
	 * @return
	 */
	public static String random(){
		UUID uuid = UUID.randomUUID();//36位长度(包含了 四个 - )
		String uuidString = uuid.toString();
		uuidString = uuidString.replace("-", "");
		uuidString = uuidString.toUpperCase();
		return uuidString;
	}

	/**
	 * 通过 SHA1 对字符串进行加密
	 * @param source
	 * @return
	 */
	public static String sha1(String source ){
		try{
			MessageDigest md = MessageDigest.getInstance("SHA1");
			BASE64Encoder encoder = new BASE64Encoder();
			return encoder.encode( md.digest( source.getBytes() ) );
		}catch(NoSuchAlgorithmException e){
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 对 给定字符串 进行 md5 加密
	 * @param source 待加密的字符串
	 * @return
	 */
	protected static String md524(String source ){
		try{
			MessageDigest md = MessageDigest.getInstance("MD5");
			BASE64Encoder encoder = new BASE64Encoder();
			return encoder.encode( md.digest(source.getBytes()) );
		}catch(NoSuchAlgorithmException e){
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 对字符串进行MD5加密
	 * @param source 需要加密的字符串
	 * @return 返回加密后的字符串
	 */
	public static final String MD5(String source){
		if(source != null){
			StringBuffer md5 = new StringBuffer();
			MessageDigest md = null;
			try{
				md = MessageDigest.getInstance("MD5");
				md.update(source.getBytes());
				byte[] mdBytes = md.digest();

				for(int i = 0;i < mdBytes.length;i++){
					int temp;
					if(mdBytes[i] < 0){
						temp = 256+mdBytes[i];
					}else{
						temp = mdBytes[i];
					}
					if(temp < 16){
						md5.append("0");
					}
					md5.append(Integer.toString(temp,16 ));
				}
			}catch(NoSuchAlgorithmException e){
				e.printStackTrace();
			}
			return md5.toString().toUpperCase();
		}
		return null;
	}
	/**
     * 检测邮箱合法性
     *
     * @param email
     * @return
     */
    public static boolean isEmail(String email) {
        if ((email == null) || (email.trim().length() == 0)) {
            return false;
        }
        String regEx = "^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\\.[a-zA-Z]{2,4}$";
        Pattern p = Pattern.compile(regEx);
        Matcher m = p.matcher(email.trim().toLowerCase());

        return m.find();
    }

    /**
     * Double进行四舍五入
     *
     * @param v
     * @param scale
     * @return
     */
    public static double getDouble(Double v, int scale) {

        if (scale < 0) {
            scale = 0;
        }
        BigDecimal b = new BigDecimal(v);
        BigDecimal one = new BigDecimal("1");
        return b.divide(one, scale, BigDecimal.ROUND_HALF_UP).doubleValue();
    }

    /**
     * 得到指定位数的小数
     * @param v
     * @param scale
     * @return
     */
    public static String getDecimals(Double v, int scale) {

        return String.format("%." + String.valueOf(scale) + "f", v);

    }
    /**
     * 根据Unicode编码完美的判断中文汉字和符号
     *
     * @param c
     * @return
     */
    private static boolean isChinese(char c) {
        Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
        if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
                || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
                || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
                || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
                || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
            return true;
        }
        return false;
    }

    /**
     * 判断是否包含中文汉字
     *
     * @param strName
     * @return
     */
    public static boolean isChineseHave(String strName) {
        char[] ch = strName.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            char c = ch[i];
            if (isChinese(c)) {
                return true;
            }
        }
        return false;
    }

    /**
     * 判断是否只有中文汉字
     *
     * @param strName
     * @return
     */
    public static boolean isChineseAll(String strName) {
        char[] ch = strName.toCharArray();
        for (int i = 0; i < ch.length; i++) {
            char c = ch[i];
            if (!isChinese(c)) {
                return false;
            }
        }
        return true;
    }

    /**
     * 判断邮政编码
     *
     * @param str
     * @return
     */
    public static boolean isCard(String str) {
        Pattern p = Pattern.compile("[1-9]\\d{5}(?!\\d)");
        Matcher m = p.matcher(str);
        return m.matches();
    }

}
时间: 2024-11-01 05:19:06

StringHelper--封转自己的字符串工具类的相关文章

C#字符串工具类 截取、过滤、格式判断等

  C#字符串工具类,实现的功能包括:判断某值是否在枚举内(位枚举).将全角数字转换为数字.判断是否为IP.获得当前页面客户端的IP.改正sql语句中的转义字符.检测是否是正确的Url.检测是否符合email格式.SQL字符串过滤.按字节数截取字符串(不带省略号).按字节数截取字符串(后面加省略号...)等. view sourceprint?001using System; 002using System.Collections.Generic; 003using System.Linq; 0

Java工作利器之常用工具类(三)——字符串工具类-智能截取

前两篇博文简单分享了一下数字工具类,现在说说字符串工具类. 相信大家都自己封装过或者用过guava封装的Strings,但是有没有可以智能截取,比如说"截取整数第二个到倒数第二个"的字符串.你是否还需要自己写str.substring(1,str.length()-2).如果是的话,请继续往下看吧.暂时还未见过可以反向截取字符串的.一般都是substring(str, start, end)或者substring(str, len);而这里的参数都必须是正数,否则就会报错.所以为了改善

【java】分割字符串工具类,霸气 jdk自带的

java 分割字符串,分割string,可以根据多个条件去分割.比如逗号,分号,逗号或者分号. 比如一个字符串:"abc,def;gh,ij;k;lm,no,p;qr,st"按逗号和分号分隔,,这里应该分隔成10个字串,,java怎么写??如果用split怎么样一次分隔开? StringTokenizer st = new StringTokenizer(selWarehouse,","); StringTokenizer st = new StringTokeni

java-有没有工具类可以截取出指定字符两边的字符串

问题描述 有没有工具类可以截取出指定字符两边的字符串 比如key=value 我要取到key和value不要中间的=号截取出来的可以是一个字符串数组 解决方案 String array[]="key=value".split("="); 解决方案二: strong text 字符串split("="),放到一个数组里面,然后可以用一个加强for循环for(String str:array)遍历出来就OK了 解决方案三: 使用java.util.P

我的Java开发学习之旅------&amp;gt;工具类:Java获取字符串和文件进行MD5值

ps:这几天本人用百度云盘秒传了几部大片到云盘上,几个G的文件瞬秒竟然显示"上传成功"!这真让我目瞪口呆,要是这样的话,那得多快的网速,这绝对是不可能的,也许这仅是个假象.百度了一下才发现所谓的"秒传"是常见的"忽略式"上传方式,就是您上传了一个文件名为111.exe,MD5为一个数,有一个网友以前也上传一个叫222.exe,MD5和您上传的文件MD5码一模一样,所以这个文件上传到服务器上的时间就很短了,这是因为别人上传过这个文件,您上传这个文件

Java 随机取字符串的工具类_java

一.Java随机数的产生方式 在Java中,随机数的概念从广义上将,有三种. 1.通过System.currentTimeMillis()来获取一个当前时间毫秒数的long型数字. 2.通过Math.random()返回一个0到1之间的double值. 3.通过Random类来产生一个随机数,这个是专业的Random工具类,功能强大. 二.Random类API说明 1.Java API说明 Random类的实例用于生成伪随机数流.此类使用 48 位的种子,使用线性同余公式对其进行修改(请参阅 D

浅谈常用字符串与集合类转换的工具类_java

在项目中,我们经常需要把接收到的字符串转换成对应的集合类保存,或者把集合类转换成字符串以方便传输,这个工具类中封装了几个常用的方法,对于这种转换需求十分方便. import java.util.Arrays; import java.util.Collection; import java.util.HashMap; import java.util.HashSet; import java.util.Map; import java.util.Properties; import java.u

原 Java发送邮件工具类(可发送匿名邮件)

    为了不想到处去下载jar包,我使用maven为我管理,在开始编码这些东西之前,我们先在pom.xml文件中<dependencies>标签内加入以下内容: ? 1 2 3 4 5 6 7 8 9 10 11 <!-- Following jars are involved by MailSender.java --> <dependency>     <groupId>com.sun.mail</groupId>     <arti

常用PHP封装分页工具类

分页基本上是每个项目都会使用到的,所以呢,把它封装成一个工具类,以后直接调用就可以了(虽然TP框架的灰常强大,但是自己封一个也未尝不可.),这样既省时又省力还赚'工分'. 我封的这个分页工具类还比较完整,有首页,上一页,下一页,末页和可选数量的页码数量(也就是当页面很多时,只显示依据参数传入的个数),还可以依据需求选择是否使用下拉跳转页面功能. <?php /** * 分页工具类 */ class page{ /** * 返回分页所需字符串 * @param $pageNum int 显示的页码