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();
}
}
StringHelper--封转自己的字符串工具类的更多相关文章
- StringUtils 字符串工具类
package com.thinkgem.jeesite.common.utils; import java.io.File; import java.io.IOException; import j ...
- Redis操作字符串工具类封装,Redis工具类封装
Redis操作字符串工具类封装,Redis工具类封装 >>>>>>>>>>>>>>>>>>& ...
- * 类描写叙述:字符串工具类 类名称:String_U
/****************************************** * 类描写叙述:字符串工具类 类名称:String_U * ************************** ...
- Jsoup请求http或https返回json字符串工具类
Jsoup请求http或https返回json字符串工具类 所需要的jar包如下: jsoup-1.8.1.jar 依赖jar包如下: httpclient-4.5.4.jar; httpclient ...
- StringUtil字符串工具类
package com.zjx.test03; /** * 字符串工具类 * @author * */ public class StringUtil { /** * 判断是否是空 * @param ...
- 产生UUID随机字符串工具类
产生UUID随机字符串工具类 UUID是指在一台机器上生成的数字,它保证对在同一时空中的所有机器都是唯一的.通常平台会提供生成的API.按照开放软件基金会(OSF)制定的标准计算,用到了以太网卡地址. ...
- 自用java字符串工具类
不断封装一些常用的字符串操作加到这个工具类里,不断积累: package com.netease.lede.qa.util; import java.text.ParseException; impo ...
- String字符串工具类
字符串类(StringUtil.cs) using System; namespace Sam.OA.Common { /// <summary> /// 字符处理工具类 /// 作者:陈 ...
- StringUtils字符串工具类左侧补齐(leftPad)、右侧补齐(rightPad)、左右两侧补齐(center)工具方法
这里使用的是 org.apache.commons.lang.StringUtils;下面是StringUtils工具类中字符串左侧补齐的方法,示例如下: //左侧补齐 第一个参数:原始字符串,第二个 ...
- 字符串工具类ToStringBuilder常用方法介绍
一.简介与引入 1.ToStringBuilder.HashCodeBuilder.EqualsBuilder.ToStringStyle.ReflectionToStringBuilder.Co ...
随机推荐
- 1218: [HNOI2003]激光炸弹
1218: [HNOI2003]激光炸弹 Time Limit: 10 Sec Memory Limit: 162 MBSubmit: 1139 Solved: 542[Submit][Statu ...
- 从客户端中检测到有潜在危险的 Request.Form或Requst.String的值。
在ASP中客户端请求服务时会出现"从客户端中检测到有潜在危险的 Request.Form或Requst.QueryString的值.",原因是在web.config配置文件中存在这 ...
- 浅谈并发和tomcat线程数
假设Tomcat每到固定一个时间会有一个高峰,峰值的并发达到了3000以上,最后的结果是Tomcat线程池满了,日志看很多请求超过了1s. 服务器性能很好,Tomcat版本是7.0.54,配置如下 & ...
- mac 下 wget 安装
1.下载 wget 压缩包,wget 下载地址:ftp://ftp.gnu.org/gnu/wget/ 2.make && make install 3.如果提示 permission ...
- 用Angular2+Express快速搭建博客
1. 写在前面 昨天花了1天的时间把自己的博客从以前的Express换成了Angular2+Express,遂记录于此.博客Demo在这里,你也可以点击这里查看完整代码. 第一次使用Angular2, ...
- TCP/IP笔记(二)TCP/IP简介
上回,主要介绍了下协议和OSI参考模型,并简单了解下网络构成要素,这回该说说TCP/IP了 互联网与TCP/IP的关系 互联网进行通信时,需要相应的网络协议,TCP/IP原本就是为使用互联网而开发 ...
- 记一次企业级爬虫系统升级改造(六):基于Redis实现免费的IP代理池
前言: 首先表示抱歉,春节后一直较忙,未及时更新该系列文章. 近期,由于监控的站源越来越多,就偶有站源做了反爬机制,造成我们的SupportYun系统小爬虫服务时常被封IP,不能进行数据采集. 这时候 ...
- Bug跟踪的流程
本文以翼发云协同项目管理系统为例子来讲解Bug跟踪的流程,它以工作流为中心的集成式Bug跟踪软件,它广泛地应用于研发行业的产品缺陷管理 与跟踪.事务跟踪.问题跟踪.任务跟踪.查询跟踪.需求管理.变更跟 ...
- Unity文档总结(2)-Understanding Automatic Memory Management
当一个对象.字符串.数组被创建的时候,从中间池申请分配需要存储的内存称为堆.当该部分不在使用时,一度占用的内存被释放收回,用于别的事物.在过去,它通常由开发人员分配和释放这些堆内存块,明确相应的功能调 ...
- Redis数据迁移方案
场景 Redis实例A ---> Redis实例B,整库全量迁移 方案一: mac环境 brew install npm npm install redis-dump -g 针对RedisA: ...