Solo  当前访客:3 登录 注册

喧哗博客-http://blog.xuahua.com

繁华过后的沉寂--技术经验分享
浏览次数: 95,037    文章总数: 91    评论总数: 3
标签:

java基础篇--生成指定长度的随机字符串 有更新!

public static Random random = new Random();
	/**
	 * 生成len 位随机整数
	 *  包括数字字母
	  * @Title: getSexRandom
	  * @return int    
	  * @throws
	 */
	public static String getRandomStr(int len){
		StringBuilder ret = new StringBuilder();
		for (int i = 0; i < len; i++) {
			boolean isChar = (random.nextInt(2) % 2 == 0);// 输出字母还是数字
			if (isChar) { // 字符串
				int choice = random.nextInt(2) % 2 == 0 ? 65 : 97; // 取得大写字母还是小写字母
				ret.append((char) (choice + random.nextInt(26)));
			} else { // 数字
				ret.append(Integer.toString(random.nextInt(10)));
			}
		}
		return ret.toString();
	}

java基础篇-字符串编码转化 有更新!

原文 http://blog.xuahua.com/articles/2016/03/09/1457510183958.html

	/**
	 * GBK格式转换成utf-8编码
	 * @param str
	 * @return
	 * @throws UnsupportedEncodingException
	 */
	public static String gbToUtf8(String str)
			throws UnsupportedEncodingException {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < str.length(); i++) {
			String s = str.substring(i, i + 1);
			if (s.charAt(0) > 0x80) {
				byte[] bytes = s.getBytes("Unicode");
				String binaryStr = "";
				for (int j = 2; j < bytes.length; j += 2) {
					// the first byte
					String hexStr = getHexString(bytes[j + 1]);
					String binStr = getBinaryString(Integer.valueOf(hexStr, 16));
					binaryStr += binStr;
					// the second byte
					hexStr = getHexString(bytes[j]);
					binStr = getBinaryString(Integer.valueOf(hexStr, 16));
					binaryStr += binStr;
				}
				// convert unicode to utf-8
				String s1 = "1110" + binaryStr.substring(0, 4);
				String s2 = "10" + binaryStr.substring(4, 10);
				String s3 = "10" + binaryStr.substring(10, 16);
				byte[] bs = new byte[3];
				bs[0] = Integer.valueOf(s1, 2).byteValue();
				bs[1] = Integer.valueOf(s2, 2).byteValue();
				bs[2] = Integer.valueOf(s3, 2).byteValue();
				String ss = new String(bs, "UTF-8");
				sb.append(ss);
			} else {
				sb.append(s);
			}
		}
		return sb.toString();
	}

	private static String getHexString(byte b) {
		String hexStr = Integer.toHexString(b);
		int m = hexStr.length();
		if (m < 2) {
			hexStr = "0" + hexStr;
		} else {
			hexStr = hexStr.substring(m - 2);
		}
		return hexStr;
	}

	private static String getBinaryString(int i) {
		String binaryStr = Integer.toBinaryString(i);
		int length = binaryStr.length();
		for (int l = 0; l < 8 - length; l++) {
			binaryStr = "0" + binaryStr;
		}
		return binaryStr;
	}

	/**
	 * UTF-8格式的字符串,转换成GB2312
	 * 
	 * @param str
	 * @return
	 */
	public static String utf8Togb2312(String str) {
		String utf8 = "";
		String unicode = "";
		String gbk = "";
		try {
			utf8 = new String(str.getBytes("UTF-8"));
			// System.out.println(utf8);
			unicode = new String(utf8.getBytes(), "UTF-8");
			// System.out.println(unicode);
			gbk = new String(unicode.getBytes("GBK"));
		} catch (UnsupportedEncodingException e1) {
			// TODO Auto-generated catch block
			e1.printStackTrace();
		}
		return gbk;
	}

	/**
	 * 将 GB2312 编码格式的字符串转换为 UTF-8 格式的字符串:
	 * 
	 * @param str
	 * @return
	 */
	public static String gb2312ToUtf8(String str) {
		String urlEncode = "";
		try {
			urlEncode = URLEncoder.encode(str, "UTF-8");
		} catch (UnsupportedEncodingException e) {
			e.printStackTrace();
		}
		return urlEncode;
	}

java基础篇-字符串首字母大写 有更新!

1,需求

  字符串首字母大写

2,代码

 

public static String toUpFirstChar(String str) {
		if (StringUtils.isNotEmpty(str)) {
			return str.substring(0, 1).toUpperCase() + str.substring(1);
		}
		return null;
}

java基础篇-字符串隐藏2 有更新!

1,需求

   

* 名称格式化,名称隐藏 <s:property
* value="@com.ecp.common.helper.StringUtil@formatStr(name)"/>
*
* @param name
* @param myname
* 没有传null
* @return 若:中文名称 (name为空:*** name为一位:name+*** name为两位或者以下:张***
* name为两位以上:张***三 )
*
* 若:英文名称 (name为空:*** name为一位:name+***
* name为四位或者以下:长度减一+***+最后一位 name为四位以上:前四位+***+最后一位 )
*/

2,代码

public static String formatStr(String name, String myname) {

		if (StringUtils.isBlank(name)) {
			return "***";
		}
		if (name.equals(myname)) {
			return name;
		}
		if (name.length() < 2) {
			return name + "***";
		}
		String lastname  = name.substring(name.length()-1);
		String regEx = "[\u4e00-\u9fa5]";
		Matcher matcher = Pattern.compile(regEx).matcher(name);
		if (matcher.find())
			name = name.length() <= 2 ? name.substring(0, name.length() - 1)
					: name.substring(0, 2);
		else
			name = name.length() <= 4 ? name.substring(0, name.length() - 1)
					: name.substring(0, 4);
		return name + "***"+lastname;
	}

java基础篇-字符串隐藏1 有更新!

一,字符串隐藏替换

     1,需求

         长度为二位以下者,还回原串
         长度为二位以上到四位者,保留前前一位与最后一位中间以***替换
         长度为四位以上者到八位者,保留前二位与最最后二位,中间以***替换
         长度为八位以上者,保留以前三位与后三位,中间以***替换。

     2,适用场景

         针对用户名,姓名等敏感信息,做隐藏处理。

    3,代码实现 

   

/**
	 * 长度为二位以下者,还回原串
	 * 长度为二位以上到四位者,保留前前一位与最后一位中间以***替换
	 * 长度为四位以上者到八位者,保留前二位与最最后二位,中间以***替换
	 * 长度为八位以上者,保留以前三位与后三位,中间以***替换。
	 * @param number
	 * @return
	 */
	public static String formatNumber(String number){
		if(StringUtils.isBlank(number)) return "";
		if(number.length()<=2) return number;
		if(number.length()<=4) return number.substring(0,1)+"***"+number.substring(number.length()-1);
		if(number.length()<8) return number.substring(0,2)+"***"+number.substring(number.length()-2);
		return number.substring(0,3)+"***"+number.substring(number.length()-3);
	}

公告

喧哗博客--繁华过后的沉寂--技术经验分享^-^
Copyright (c) 2009-2019, b3log.org & hacpai.com