📄 decode.java
字号:
package com.tongtu.comm;
/**
* Created by IntelliJ IDEA.
* User: Administrator
* Date: 2003-8-22
* Time: 9:48:20
* To change this template use Options | File Templates.
*/
//import com.kjlink.lawton.common.grammar.Grammar;
import java.util.Calendar;
import java.text.SimpleDateFormat;
import java.io.ByteArrayInputStream;
/**
* 字符串实用类。<p>
* 提供各种常用字符串操作方法,如编码转换等等。
* <p/>
*
* @author irevin
* @version 1.0
*/
public class Decode {
/**
* 将给定的字符串转换为中文GBK编码的字符串。
*
* @param str 输入字符串
* @return 经GBK编码后的字符串,如果有异常,则返回原编码字符串
*/
public static String toChinese(final String str) {
if (isNullorBlank(str)) {
return str;
}
String retVal = str;
try {
retVal = new String(str.getBytes("ISO8859_1"), "GBK");
} catch (Exception e) {
//log...
}
return retVal;
}//end toChinese()
/**
* 给定字符串是否为空。
*
* @param str 需要检查的字符串
* @return 如果为null或"",则返回true,否则为false
*/
public static boolean isNullorBlank(final String str) {
boolean isNorB = false;
if (null == str || 0 >= str.length()) {
isNorB = true;
}
return isNorB;
}//end isNullorBlank()
//5位输入字符串,求其下一位
public static String incrementString(final String str) {
String newCodeString = "";
if (str.length() >= 5) {
int oldCode = Integer.parseInt(str);
int newCode = oldCode + 1;
newCodeString = newCode + "";
while (newCodeString.length() < 5)
newCodeString = "0" + newCodeString;
}
return newCodeString;
}
/*
*按照一定格式"yyyy-MM-dd"得到当天时间
*@Author Irevin 20030624
*/
public static String getTime() throws Exception {
String s = null;
try {
Calendar calendar = Calendar.getInstance();
java.util.Date date = calendar.getTime();
SimpleDateFormat simpledateformat = new SimpleDateFormat("yyyy-MM-dd");
s = simpledateformat.format(date);
} catch (Exception exception) {
exception.printStackTrace();
}
return s;
}
public static String getTime2() throws Exception {
String s = null;
try {
Calendar calendar = Calendar.getInstance();
java.util.Date date = calendar.getTime();
SimpleDateFormat simpledateformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
s = simpledateformat.format(date);
} catch (Exception exception) {
exception.printStackTrace();
}
return s;
}
//*********************************************************************
//* Base64 - a simple base64 encoder and decoder.
//*
//* Copyright (c) 1999, Bob Withers - bwit@pobox.com
//*
//* This code may be freely used for any purpose, either personal
//* or commercial, provided the authors copyright notice remains
//* intact.
//*********************************************************************
/**
* Encodes a String as a base64 String.
*
* @param data a String to encode.
* @return a base64 encoded String.
*/
public static String encodeBase64(String data) {
return encodeBase64(data.getBytes());
}
/**
* Encodes a byte array into a base64 String.
*
* @param data a byte array to encode.
* @return a base64 encode String.
*/
public static String encodeBase64(byte[] data) {
int c;
int len = data.length;
StringBuffer ret = new StringBuffer(((len / 3) + 1) * 4);
for (int i = 0; i < len; ++i) {
c = (data[i] >> 2) & 0x3f;
ret.append(cvt.charAt(c));
c = (data[i] << 4) & 0x3f;
if (++i < len)
c |= (data[i] >> 4) & 0x0f;
ret.append(cvt.charAt(c));
if (i < len) {
c = (data[i] << 2) & 0x3f;
if (++i < len)
c |= (data[i] >> 6) & 0x03;
ret.append(cvt.charAt(c));
} else {
++i;
ret.append((char) fillchar);
}
if (i < len) {
c = data[i] & 0x3f;
ret.append(cvt.charAt(c));
} else {
ret.append((char) fillchar);
}
}
return ret.toString();
}
/**
* Decodes a base64 String.
*
* @param data a base64 encoded String to decode.
* @return the decoded String.
*/
public static String decodeBase64(String data) {
return decodeBase64(data.getBytes());
}
/**
* Decodes a base64 aray of bytes.
*
* @param data a base64 encode byte array to decode.
* @return the decoded String.
*/
public static String decodeBase64(byte[] data) {
int c, c1;
int len = data.length;
StringBuffer ret = new StringBuffer((len * 3) / 4);
for (int i = 0; i < len; ++i) {
c = cvt.indexOf(data[i]);
++i;
c1 = cvt.indexOf(data[i]);
c = ((c << 2) | ((c1 >> 4) & 0x3));
ret.append((char) c);
if (++i < len) {
c = data[i];
if (fillchar == c)
break;
c = cvt.indexOf((char) c);
c1 = ((c1 << 4) & 0xf0) | ((c >> 2) & 0xf);
ret.append((char) c1);
}
if (++i < len) {
c1 = data[i];
if (fillchar == c1)
break;
c1 = cvt.indexOf((char) c1);
c = ((c << 6) & 0xc0) | c1;
ret.append((char) c);
}
}
return ret.toString();
}
private static final int fillchar = '=';
private static final String cvt = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
+ "abcdefghijklmnopqrstuvwxyz"
+ "0123456789+/";
public static void main(String[] args) {
// String a = "a100001";
// System.out.println(encodeBase64(a));
String str = "jsadlfj ftp://www.google.com jadslf ";
str += "<img \r src=\"http://192.168.0.6/lawton2/newspic/163_1.jpg\"></img>";
str += "!@$#中文\r" +
"<img src=\"http://61.191.24.183/dog.gif\"></img>";
// System.out.println(getHtmlFormat(str));
// System.out.println(getTimeString(12.99f));
}
/**
* 将以小时为单位的时间对应的时间字符串(xx小时xx分钟)
* @param fTime
* @return
*/
static public String getTimeStringM(float fTime){
if(fTime<0){
fTime=0;
}
String strTime="";
int time=(int)fTime;
// int iTime = (int)fTime;
// strTime+=time/60+"小时";
// if(time%60 > 0){
// strTime += time%60+"分钟";
// }
strTime += time+"小时";
if((fTime - time) > 0.000000001){
time = (int)((fTime - time) * 60 + 0.5);
if(time > 0)
strTime += time+"分钟";
}
return strTime;
}
/**
* 根据传入的字符串,和长度截取字符串
* @param str
* @return
*/
static public String cutString(String strname,int i){
String strname0="",strname1="",strname2="",strname3="";
int kk=0;
strname0=strname;
strname3=strname;
while(!strname0.equals("")){
if(kk<i){
strname1=strname0.substring(0,1);
kk=kk+(strname1.getBytes()).length;
}else{
break;
}
if(kk<=i)
strname2=strname2+strname1;
strname0=strname0.substring(1);
}
if(strname3.getBytes().length>i)
strname0=strname2+"..";
else
strname0=strname3;
return strname0;
}
static public String getHtmlFormat(String str) {
// Grammar parser = new Grammar(new ByteArrayInputStream(str.getBytes()));
//String ret = str;
/* try{
ret = parser.ParseString();
}catch(Exception ex){
ex.printStackTrace();
}
return ret; */
/*
str = str.replaceAll("<", "<");
str = str.replaceAll(">", ">"); */
//处理<img >
str = str.replaceAll("<img","<img");
str = str.replaceAll("</img>","</img>");
int imgStart = str.indexOf("<img");
int imgEnd = imgStart;
while(imgStart >=0){
imgEnd = str.indexOf(">", imgStart);
str = str.substring(0, imgEnd) + ">" + str.substring(imgEnd + 4);
imgStart = str.indexOf("<img", str.lastIndexOf(">"));
}
//处理回车
char[] myBuffer = str.toCharArray();
StringBuffer sb = new StringBuffer();
for (int i = 0; i < str.length(); i++) {
int s = (int) myBuffer[i];
//turn enter to <br>
if (s == 13)
sb.append("<br>");
else if (s==10)
sb.append("");
else if (s == 32)
sb.append(" ");
else
sb.append(str.charAt(i));
}
str = sb.toString();
//处理超链接
int start,end, end1, end2;
String pre, suf, mid;
start = str.indexOf("http://", 0);
// System.out.println("str = "+str);
while(start >= 0 && start < str.length()){
imgStart = str.lastIndexOf("<img", start);
if(imgStart >= 0){
imgEnd = str.indexOf("</img>", imgStart);
}
// System.out.println("imgStart = "+imgStart+" start = "+start+"imgEnd = "+imgEnd);
if(imgStart < start && start < imgEnd){
start = str.indexOf("http://", start + 7);
continue;
}
end1 = str.indexOf(" ", start);
end2 = str.indexOf("<br>", start);
if(end1 < 0 && end2 < 0){
end = str.length();
}else{
end = end1<end2 && end1>=0 || end2 < 0? end1 : end2;
}
pre = str.substring(0, start);
if(end == str.length()){
mid = str.substring(start, end);
suf = "";
}else{
mid = str.substring(start, end);
suf = str.substring(end);
}
str = pre + "<a href=\"javascript:openwindow('" + mid +"', '',600, 600);\">" + mid + "</a>" + suf;
start = str.indexOf("http://", str.lastIndexOf("</a>"));
}
start = str.indexOf("ftp://", 0);
while(start >= 0 && start < str.length()){
imgStart = str.lastIndexOf("<img", start);
if(imgStart >= 0){
imgEnd = str.indexOf("</img>", imgStart);
}
// System.out.println("imgStart = "+imgStart+" start = "+start+"imgEnd = "+imgEnd);
if(imgStart < start && start < imgEnd){
start = str.indexOf("ftp://", start + 6);
continue;
}
end1 = str.indexOf(" ", start);
end2 = str.indexOf("<br>", start);
if(end1 < 0 && end2 < 0){
end = str.length();
}else{
end = end1<end2 && end1>=0 || end2 < 0? end1 : end2;
}
pre = str.substring(0, start);
if(end == str.length()){
mid = str.substring(start, end);
suf = "";
}else{
mid = str.substring(start, end);
suf = str.substring(end);
}
str = pre + "<a href=\"javascript:openwindow('" + mid +"', '',600, 600);\">" + mid + "</a>" + suf;
start = str.indexOf("ftp://", str.lastIndexOf("</a>"));
}
//还原html元素中的空格
start = str.indexOf("<");
end = str.indexOf(">");
while(start>=0 && end>=0 && start < end){
str = str.substring(0, start) + str.substring(start, end).replaceAll(" "," ") + str.substring(end);
start = str.indexOf("<",start+1);
end = str.indexOf(">", start);
}
return str;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -