⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 stringutils.java

📁 FMJ(freedom media for java)是java视频开发的新选择
💻 JAVA
字号:
package net.sf.fmj.utility;/** *  * @author Ken Larson * */public final class StringUtils{	public static String byteToHexString_ZeroPad(byte b)	{		String s = Integer.toHexString(ByteUtils.uByteToInt(b));		if (s.length() == 1)			s = "0" + s;		return s;	}	private static final int MAX_STANDARD_ASCII = 255;	public static String replaceSpecialUrlChars(final String raw)	{		return replaceSpecialUrlChars(raw, false);	}	// see http://en.wikipedia.org/wiki/Query_string	public static String replaceSpecialUrlChars(final String raw, final boolean isPath)	{	           if (raw == null) 		{            return null;        }        final StringBuffer buf = new StringBuffer();        for (int i = 0; i < raw.length(); ++i) 		{            char c = raw.charAt(i);            if ((c >= 'a' && c <= 'z') ||                	(c >= 'A' && c <= 'Z') ||                	(c >= '0' && c <= '9') ||                	(c == '.' || c == '-' || c == '_' || c == '~') ||                	(isPath &&                 			(c == '/' || c == ':' || c == '\\')))			{                buf.append(c);            }            else            {            	if (i > MAX_STANDARD_ASCII)            		throw new IllegalArgumentException();	// TODO: unicode?            	buf.append('%');            	buf.append(byteToHexString_ZeroPad((byte) c));            	            }        }        return buf.toString();	}		  public static String restoreSpecialURLChars(String cooked) 		{	        if (cooked == null) 	        {	            return null;	        }	        StringBuffer buf = new StringBuffer();			StringBuffer hexValueBuf = new StringBuffer();			int state = 0;	        for (int i = 0; i < cooked.length(); ++i) 	        {	            char c = cooked.charAt(i);				if (state == 0)				{					if (c == '%') 					{						state = 1;						hexValueBuf = new StringBuffer();					}					else					{	buf.append(c);					}				}				else				{					hexValueBuf.append(c);										if (hexValueBuf.length() == 2)					{	String token = hexValueBuf.toString();						int value = Integer.parseInt(token, 16);		//TODO: what to do with num format except?						buf.append((char) value);												state = 0;					}					else if (hexValueBuf.length() == 1 && hexValueBuf.charAt(0) == '%')					{						buf.append('%');						state = 0;					}									}	        }			if (state == 1)			{	buf.append("&" + hexValueBuf.toString());	// incomplete			}	        return buf.toString();	    }	  		/**		 * Dump to string using a debugger-like format - both hex and ascii.		 * Bytes dumped will be byteslen - offset.		 */		public static String dump(byte[] bytes, int offset, int byteslen)		{			final StringBuffer b = new StringBuffer();						final int width = 32;			int len = width;			while (offset < byteslen)			{				int remainder = 0;								if (offset + len > byteslen)				{	len = byteslen - offset;					remainder = width - len;				}				b.append(StringUtils.byteArrayToHexString(bytes, len, offset));				for (int i = 0; i < remainder; ++i)				{					b.append("  ");				}				b.append(" | ");				for (int i = 0; i < len; ++i)				{					byte c = bytes[offset + i];					if (c >= ' ' && c <= '~')					{	b.append((char) c);					}					else						b.append('.');				}								b.append('\n');				offset += len;							}			return b.toString();		}				public static String byteArrayToHexString(byte [] array, int len, int offset)		{				StringBuffer b = new StringBuffer();			for (int i = 0; i < len; ++i)			{	String byteStr = Integer.toHexString(ByteUtils.uByteToInt(array[offset + i]));				if (byteStr.length() == 1)					byteStr = "0" + byteStr;				b.append(byteStr);			}			return b.toString();				}				/**		 * 		 * @throws NumberFormatException		 */		public static byte[] hexStringToByteArray(String s)		{			byte[] array = new byte[s.length() / 2];			for (int i = 0; i < array.length; ++i)			{	array[i] = hexStringToByte(s.substring(i * 2, i * 2 + 2));			}			return array;		}				/**		 * 		 * @throws NumberFormatException		 */		public static byte hexStringToByte(String s)		{	return (byte) Integer.parseInt(s, RADIX_16);		}				private static final int RADIX_16 = 16;				public static String byteArrayToBase64String(byte[] value)		{	final sun.misc.BASE64Encoder base64Encoder = new sun.misc.BASE64Encoder();			return base64Encoder.encode(value);		}		}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -