java 字符串工具_字符串操作工具 StringTools

字符串操作工具 StringTools

2018-09-19

package com.aicaipiao.client.common;

import java.io.ByteArrayOutputStream;

import java.io.UnsupportedEncodingException;

import java.net.URLEncoder;

import java.util.HashMap;

import java.util.Iterator;

import java.util.Map;

import java.util.Random;

import java.util.regex.Matcher;

import java.util.regex.Pattern;

import java.util.zip.DeflaterOutputStream;

import java.util.zip.Inflater;

public class StringTools {

/**

* 产生随机字符串

*/

private static Random randGen = null;

private static char[] numbersAndLetters = null;

private static Object initLock = new Object();

private static Random randGenNumber = null;

private static char[] numbersAndLettersNumber = null;

private static Object initLockNumber = new Object();

public static final String parserArrayToString(String[] array,String splter){

StringBuffer strBuff=new StringBuffer();

for(String str:array){

strBuff.append(str);

strBuff.append(splter);

}

strBuff.delete(strBuff.toString().length()-splter.length(),strBuff.toString().length());

return strBuff.toString();

}

public static final String randomString(int length) {

if (length < 1) {

return null;

}

if (randGen == null) {

synchronized (initLock) {

if (randGen == null) {

randGen = new Random();

numbersAndLetters = ("0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ").toCharArray();

}

}

}

char[] randBuffer = new char[length];

for (int i = 0; i < randBuffer.length; i++) {

randBuffer[i] = numbersAndLetters[randGen.nextInt(62)];

}

return new String(randBuffer);

}

public static final String randomNumberString(int length) {

if (length < 1) {

return null;

}

if (randGenNumber == null) {

synchronized (initLockNumber) {

if (randGenNumber == null) {

randGenNumber = new Random();

numbersAndLettersNumber = ("0123456789")

.toCharArray();

}

}

}

char[] randBuffer = new char[length];

for (int i = 0; i < randBuffer.length; i++) {

randBuffer[i] = numbersAndLettersNumber[randGenNumber.nextInt(10)];

}

return new String(randBuffer);

}

final static public String getStringFillZero(String str,int length){

if(str.length( ) == length){

return str;

}

int fillLength = length - str.length();

for(int i = 0;i

str = "0"+str;

}

return str;

}

final static public boolean isValueIdTokenString(String tokenString,String split,String value){

String [] str = tokenString.split(split);

for(int i=0;i

if(str[i].equals(value)){

return true;

}

}

return false;

}

/**

* @描述:解析http头里的参数值

* @param header

* @return

*/

final static public HashMap getParametersByHttpHead(String header) {

String data = header.substring(header.indexOf("?") + 1, header

.indexOf(" HTTP"));

return getParametersByContents(data);

}

/**

* @描述:解析 key=value&key=value的键值

* @param contents

* @return

*/

final static public HashMap getParametersByContents(String contents) {

HashMap map = new HashMap();

String[] keyValues = contents.split("&");

for (int i = 0; i < keyValues.length; i++) {

String key = keyValues[i].substring(0, keyValues[i].indexOf("="));

String value = keyValues[i]

.substring(keyValues[i].indexOf("=") + 1);

map.put(key, value);

}

return map;

}

/**

* @描述:解析 key=value&key=value的键值

* @param contents

* @return

*/

final static public HashMap getParametersByContents(String contents,String charset) {

System.out.println(contents);

HashMap map = new HashMap();

String[] keyValues = contents.split("&");

for (int i = 0; i < keyValues.length; i++) {

String key = keyValues[i].substring(0, keyValues[i].indexOf("="));

String value = keyValues[i]

.substring(keyValues[i].indexOf("=") + 1);

if(charset != null && !"".equals(charset)){

try {

value = java.net.URLDecoder.decode(value, charset);

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

}

map.put(key, value);

}

return map;

}

/**

* @描述:将map转成key=value&key=value

* @param contents

* @return

*/

final static public String getStringByHashMap(Map map) {

StringBuffer sb = new StringBuffer();

Iterator it = map.keySet().iterator();

while(it.hasNext()){

Object key = it.next();

Object value = map.get(key);

sb.append(key.toString()).append("=").append(value.toString()).append("&");

}

if(sb.length()>0){

sb.deleteCharAt(sb.length()-1);

}

return sb.toString();

}

/**

* @描述:将ActionContext 里而的Parameter map转成key=value&key=value

* @param contents

* @return

*/

final static public String getStringByActionHashMap(Map map) {

StringBuffer sb = new StringBuffer();

Iterator it = map.keySet().iterator();

while(it.hasNext()){

Object key = it.next();

Object value = map.get(key);

if(value instanceof String[]){

String [] values = (String[])value;

StringBuffer subSb = new StringBuffer();

if(values!=null){

for(int i=0;i

subSb.append(values[i]).append("|");

}

if(subSb.length()>0){

subSb.deleteCharAt(subSb.length()-1);

}

}

sb.append(key.toString()).append("=").append(subSb.toString()).append("&");

}

}

if(sb.length()>0){

sb.deleteCharAt(sb.length()-1);

}

return sb.toString();

}

/**

* @描述:将map转成key=value&key=value

* @param contents

* @return

*/

final static public String getStringByHashMap(HashMap map,String chartset)throws Exception {

StringBuffer sb = new StringBuffer();

Iterator it = map.keySet().iterator();

while(it.hasNext()){

String key = (String)it.next();

String value = map.get(key);

sb.append(key).append("=").append(URLEncoder.encode(value, chartset)).append("&");

}

if(sb.length()>0){

sb.deleteCharAt(sb.length()-1);

}

return sb.toString();

}

/**

* 把给定的字符串转换为Base64编码

*

* @param source

*            需要进行转换的字符串

* @return 转换后的结果,如果source为null,则返回null

*/

public static String EncodeBase64(String source) {

if (source == null)

return null;

return new String(org.apache.commons.codec.binary.Base64

.encodeBase64(source.getBytes()));

}

/**

* 把base64编码的字符串进行解码并返回原字符串

*

* @param source

*            需要进行解码的Base64编码的字符串

* @return 解码后的原字符串,如果错误则返回null

*/

public static String DecodeBase64(String source) {

if (source == null)

return null;

try {

return new String(Base64Util.decode(source));

} catch (Exception ex) {

return null;

}

}

public static String[] split(String str, char delim) {

if(str == null) return null;

if(str.trim().equals("")) return new String[0];

int count = 1;

char c[] = str.toCharArray();

for(int i = 0; i < c.length; i++) {

if(c[i] == delim) {

count++;

}

}

String s[] = new String[count];

int index = 0;

StringBuffer sb = new StringBuffer();

for(int i = 0; i < c.length; i++) {

if(c[i] == delim) {

s[index] = sb.toString();

sb = new StringBuffer();

index ++;

} else {

sb.append(c[i]);

}

}

s[index] = sb.toString();

return s;

}

static public String decodeForwardUrl(String forwardUrl){

forwardUrl = StringTools.DecodeBase64(forwardUrl);

/**

* 以下的代码是为了让转向地址携带的参数能正常传递

* 如号码格式里面的 % 这些字符必须经过URLEncode才能被正常解析

*/

String pre = "";

String bak = forwardUrl.substring(

forwardUrl.indexOf("?") + 1, forwardUrl.length());

String area[] = bak.split("\\&");

StringBuffer sb = new StringBuffer();

for (int i = 0; i < area.length; i++) {

System.out.println("area" + area[i]);

String[] peace = area[i].split("\\=");

if (peace.length == 2) {

try {

sb.append(peace[0]).append("=").append(

URLEncoder.encode(peace[1], "GBK"))

.append("&");

} catch (UnsupportedEncodingException e) {

e.printStackTrace();

}

} else if (peace.length == 1){

System.out.println("Warning the empty parameter is:"+peace[0]);

//sb.append(peace[0]).append("=").append("").append("&");

}

}

if(sb.length()>0){

sb.deleteCharAt(sb.length()-1);

pre = forwardUrl.substring(0, forwardUrl

.indexOf("?") + 1);

}else{

//后面没有参数,不用带 ?

if(forwardUrl.indexOf("?") != -1){

pre = forwardUrl.substring(0, forwardUrl

.indexOf("?"));

}

}

forwardUrl = pre + sb.toString();

return forwardUrl;

}

public boolean isNumber(String str){

try{

Integer.valueOf(str);

return true;

}catch(Exception e){

return false;

}

}

/**

* zip压缩

* @param data String

* @return byte[]

*/

public static byte[] compress( byte[] data ) {

byte[] result = new byte[0];

try {

ByteArrayOutputStream baos = new ByteArrayOutputStream() ;

DeflaterOutputStream dos = new DeflaterOutputStream( baos ) ;

dos.write(data) ;

dos.finish() ;

result = baos.toByteArray() ;

dos.close() ;

baos.close() ;

} catch( Exception ex ) {

ex.printStackTrace() ;

}

return result ;

}

public static byte[] decompress(byte[] data) {

byte[] result = new byte[0];

ByteArrayOutputStream o = new ByteArrayOutputStream();

try {

byte[] temp = new byte[8192];

Inflater inflater = new Inflater();

inflater.setInput(data);

int got;

while (!inflater.finished())

{

got = inflater.inflate(temp);

o.write(temp, 0, got);

}

// int size = inflater.inflate(temp);

//              System.out.println("size:" + size + ",max limit:" + temp.length );

inflater.end();

//result = new byte[size];

//  System.arraycopy(temp,0,result,0,size);

} catch (Exception ex) {

ex.printStackTrace();

}

return o.toByteArray();

}

public static String getDomain(String str){

if(str.indexOf("http://") != 0){

return "";

}

if(str.indexOf(".com") != -1

|| str.indexOf(".net") != -1

|| str.indexOf(".gov") != -1

|| str.indexOf(".org") != -1

|| str.indexOf(".cn") != -1){

return str.substring(str.indexOf(".")+1, str.indexOf(".",str.indexOf(".")+1));

}else{

return "";

}

}

/*将汉字转换为Unicode

* Converts unicodes to encoded \uxxxx and escapes

* special characters with a preceding slash

*/

public static String toUnicode(String theString,boolean escapeSpace,

boolean escapeUnicode) {

int len = theString.length();

int bufLen = len * 2;

if (bufLen < 0) {

bufLen = Integer.MAX_VALUE;

}

StringBuffer outBuffer = new StringBuffer(bufLen);

for(int x=0; x

char aChar = theString.charAt(x);

// Handle common case first, selecting largest block that

// avoids the specials below

if ((aChar > 61) && (aChar < 127)) {

if (aChar == "\\") {

outBuffer.append("\\"); outBuffer.append("\\");

continue;

}

outBuffer.append(aChar);

continue;

}

switch(aChar) {

case " ":

if (x == 0 || escapeSpace)

outBuffer.append("\\");

outBuffer.append(" ");

break;

case "\t":outBuffer.append("\\"); outBuffer.append("t");

break;

case "\n":outBuffer.append("\\"); outBuffer.append("n");

break;

case "\r":outBuffer.append("\\"); outBuffer.append("r");

break;

case "\f":outBuffer.append("\\"); outBuffer.append("f");

break;

case "=": // Fall through

case ":": // Fall through

case "#": // Fall through

case "!":

outBuffer.append("\\"); outBuffer.append(aChar);

break;

default:

if (((aChar < 0x0020) || (aChar > 0x007e)) & escapeUnicode ) {

outBuffer.append("\\");

outBuffer.append("u");

outBuffer.append(toHex((aChar >> 12) & 0xF));

outBuffer.append(toHex((aChar >>  8) & 0xF));

outBuffer.append(toHex((aChar >>  4) & 0xF));

outBuffer.append(toHex( aChar        & 0xF));

} else {

outBuffer.append(aChar);

}

}

}

return outBuffer.toString();

}

/**

* Convert a nibble to a hex character

* @param nibble the nibble to convert.

*/

private static char toHex(int nibble) {

return hexDigit[(nibble & 0xF)];

}

/** A table of hex digits */

private static final char[] hexDigit = {

"0","1","2","3","4","5","6","7","8","9","A","B","C","D","E","F"

};

static public void main(String[] args)throws Exception {

//43532

//5000

String str = "http://sesd.2caipiao.com/sss/index.jsp";

str =str.substring(str.indexOf(".")+1, str.indexOf(".",str.indexOf(".")+1));

System.out.println(str);

//System.out.println("dudu123456".indexOf("dudu"));

//System.out.println("dudu123456".substring(4));

}

/**

* 替换字符串中存在手机号码的中间几位为****

* @param str

* @return

*/

public static String replaceMobile(String str) {

try {

Pattern p = Pattern

.compile("^(?:13\\d|15\\d|18[056789])-?\\d{5}(\\d{3}|\\*{3})$");

Matcher m = p.matcher(str);

if (m.matches()) {

return str.substring(0, 3) + "****" + str.substring(7, 11);

} else {

return str;

}

} catch (Exception e) {

return str;

}

}

/**

* 取前length个字符,后面用...

* @param str

* @param length

* @return

*/

public static String cutString(String str,int length) {

if(str==null || str.equals("")) return str;

int strLen = str.length();

if(strLen-1

return str;

}

try {

return str.substring(0, length)+"...";

} catch (Exception e) {

return str;

}

}

public static boolean compareString(String str1,String str2) {

if(str1==null) str1="";;

if(str2==null) str2="";;

return !str1.equals(str2);

}

}

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。

http://www.pinlue.com/style/images/nopic.gif

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值