package com.mapbar.tools;
import java.lang.String.*;
import java.util.*;
import java.text.*;
import java.util.regex.*;
import sun.misc.BASE64Decoder;
public class StringOperate {
String Error = new String(""); //As Err 代码
/*
功能:初始化
输入参数:无输入参数
返回值:无返回值
*/
public StringOperate() {
Error = "";
}
public static void main(String[] args){
String temp="";
StringOperate so=new StringOperate();
temp=so.StringPlus1("aZ");
System.out.print(temp);
}
/**
* 功能:将原字符串修改为固定长度的字符串
* (字数不足的,则在指定方向加入指定字符;字数超出的,则从左侧截取指定长度)
* @param xstring 要进行处理的字符串
* @param xlength 要修改的目标长度
* @param xin 字数长度不够的时候,要增加的指定字符(字长1位)
* @param xtarget 指定的方向(l=左,r=右)
* @return 返回处理后的字符串,如果有错返回""
*/
public String Make_Length(String xstring, int xlength, String xin, char xtarget) {
String xxin,xinstr,xtempstr;
int xxlength,i;
xxlength = xlength;
xxin = "";
xinstr = "";
xtempstr = "";
if (xin.length()<1){
xxin = "0"; //默认信息
}
else if(xin.length() > 1){
xxin = xin.substring(0,1);
}
else{
xxin = xin;
}
if (xstring.length() > xxlength) { //比预定字符串短,要截取
if (xtarget == 'r'){
xtempstr = xstring.substring(xstring.length()-xxlength, xstring.length()) ;
}
else { //默认为左侧
xtempstr = xstring.substring(0, xxlength);
}
}
else if (xstring.length() < xxlength){ //比预定字符串长,要增加指定字符
xinstr = "";
for (i = 1; i<= xxlength - xstring.length(); i++){
xinstr = xinstr + xxin;
}
if (xtarget == 'r') {
xtempstr = xstring + xinstr;
}
else { //默认为左侧
xtempstr = xinstr + xstring;
}
}
else {
xtempstr = xstring;
}
return xtempstr;
}
/**
* 功能:将文本格式的字符串转变为适合html页面浏览的字符串
* @param xstring 要进行处理的字符串
* @return 返回处理后的字符串,如果有错返回""
*/
public String HtmlEncode(String xstring){
String xtempstr;
xtempstr = GetNoNull(xstring);
xtempstr = xtempstr.replaceAll("&", "&");
//xtempstr = replace(xtempstr, " ", " ")
xtempstr = xtempstr.replaceAll(" ", " ");
xtempstr = xtempstr.replaceAll(Character.toString((char) 34), """); //双引号
xtempstr = xtempstr.replaceAll(Character.toString((char) 39), "'"); //单引号
xtempstr = xtempstr.replaceAll(">", ">");
xtempstr = xtempstr.replaceAll("<", "<");
xtempstr = xtempstr.replaceAll("\r\n", "<br>");
xtempstr = xtempstr.replaceAll("\n", "<br>");
return xtempstr;
}
/**
* 功能:将文本格式的字符串转变为适合html页面TEXT文本框内浏览的字符串
* @param xstring 要进行处理的字符串
* @return 返回处理后的字符串,如果有错返回“”
*/
public String HtmlEncodeText(String xstring){
String xtempstr;
xtempstr = GetNoNull(xstring);
//xtempstr = xtempstr.replaceAll(" ", " ");
//xtempstr = replace(xtempstr, " ", " ")
xtempstr = xtempstr.replaceAll(">", ">");
xtempstr = xtempstr.replaceAll("<", "<");
//xtempstr = xtempstr.replaceAll("\n", "<br>");
return xtempstr;
}
/**
* 功能:将文本格式的字符串转变为适合wml页面浏览的字符串
* @param xstring 要进行处理的字符串
* @return 返回处理后的字符串,如果有错返回""
*/
public String WmlEncode(String xstring){
String xtempstr;
xtempstr = GetNoNull(xstring);
xtempstr = xtempstr.replaceAll("&", "&");
//xtempstr = replace(xtempstr, " ", " ")
xtempstr = xtempstr.replaceAll(" ", " ");
xtempstr = xtempstr.replaceAll(Character.toString((char) 34), """); //双引号
xtempstr = xtempstr.replaceAll(Character.toString((char) 39), "'"); //单引号
xtempstr = xtempstr.replaceAll(">", ">");
xtempstr = xtempstr.replaceAll("<", "<");
xtempstr = xtempstr.replaceAll("\r\n", "<br/>");
xtempstr = xtempstr.replaceAll("\n", "<br/>");
return xtempstr;
}
/**
* 功能:将html页面浏览的字符串转变为文本格式的字符串 (与HtmlToText 函数对应并且匹配),用于提交表单的数据还原
* @param xstring 要进行处理的字符串
* @return 返回处理后的字符串,如果有错返回""
*/
public String unHtmlEncode(String xstring){
String xtempstr;
xtempstr = GetNoNull(xstring);
xtempstr = xtempstr.replaceAll(" ", " ");
xtempstr = xtempstr.replaceAll("&", "&");
xtempstr = xtempstr.replaceAll(""", Character.toString((char) 34)); //双引号
xtempstr = xtempstr.replaceAll( "'", Character.toString((char) 39)); //单引号
xtempstr = xtempstr.replaceAll(">", ">");
xtempstr = xtempstr.replaceAll("<", "<");
xtempstr = xtempstr.replaceAll("<br>", "\r\n");
return xtempstr;
}
/**
* 功能:整理日期变量为标准的 yyyy-MM-dd H:m:s 格式
* @param xdate 需要处理的日期型变量
* @param 返回整理后的规定格式日期字符串,如果为非法日期返回"",同时将传入参数xdate转变为规范格式
*/
public String GetDate(String xdate){
String xtempstr;
SimpleDateFormat timeformat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
xtempstr = GetNoNull(xdate);
if (xtempstr.length() > 0) {
if (toDate(xdate)!=null) {
xtempstr = timeformat.format(toDate(xdate));
}
else{
xtempstr = "";
}
}
return xtempstr;
}
/**
* 此类别内私用函数,功能:将标准 yyyy-MM-dd H:m:s 格式字符串转变为Date变量
* @param xdate 需要处理的日期型变量
* @return 返回整理后的日期型变量,如果为非法日期格式字符串返回null
*/
public Date toDate(String xdate){
java.text.SimpleDateFormat sdf=new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
try {
java.util.Date d=sdf.parse(xdate);
java.sql.Date d1=new java.sql.Date(d.getTime());
return d1;
}
catch (Exception ex) {
System.out.println("sms stringclass error:" + ex);
return null;
}
}
/**
* 功能:求得xnum位的随机ID值
* @param xnum 随机数的长度(位数)
* @return xnum位数的随机数
*/
public String MakeRnd(int xnum) {
int i,j,k;
String xx;
xx = "";
for (i = 1; i <= xnum; i++) {
//取1-3的随机数
j = ((int)((3 - 1 + 1) * java.lang.Math.random() + 1));
if (j == 1) {
//取1-26的随机数
k = 96 + ((int)((26 - 1 + 1) * java.lang.Math.random() + 1)); //a -z
}
else if (j == 2) {
//取1 - 26的随机数
k = 64 + ((int)((26 - 1 + 1) * java.lang.Math.random() + 1)); //A -Z
}
else {
//取1 - 10的随机数
k = 47 + ((int)((10 - 1 + 1) * java.lang.Math.random() + 1)); //0 -9
}
xx = xx + (char) k;
}
return xx;
}
/**
* 功能:求得xnum位的随机ID值---小写字符+数字
* @param xnum 随机数的长度(位数)
* @return xnum位数的随机数
*/
public String MakePassWordRnd(int xnum) {
int i,j,k;
String xx;
xx = "";
for (i = 1; i <= xnum; i++) {
j = ((int)((2 - 1 + 1) * java.lang.Math.random() + 1));
//取1-2的随机数
if (j == 1) {
//取1-26的随机数
k = 96 + ((int)((26 - 1 + 1) * java.lang.Math.random() + 1)); //a -z
}
else {
//取1 - 10的随机数
k = 47 + ((int)((10 - 1 + 1) * java.lang.Math.random() + 1)); //0 -9
}
xx = xx + (char) k;
}
return xx;
}
/**
* 功能:输出文件扩展名
* @param FileName 文件全名
* @return 扩展名
*/
public String GetExtendName(String FileName) {
String ExtName;
ExtName = FileName.toLowerCase();
if (ExtName.lastIndexOf(".")>=0){
ExtName = ExtName.substring(ExtName.lastIndexOf("."), ExtName.length());
}
else{
ExtName = "";
}
return ExtName;
}
/**
* 功能:输出字符串的长度,可区别中英文(中文字符将占2个长度)
* @param xstring 需要测长的字符串
* @return 纯英文字符串长度
*/
public int CnLength(String xstring) {
int p_len, xx, ascChr;
char xchar;
p_len = 0;
xx = 0;
if (xstring == null) {
xx = 0;
}
else {
for ( xx = 1; xx <= xstring.length(); xx++ ) {
xchar = xstring.charAt(xx-1);
ascChr = xchar + 0;
if (ascChr > 128) {
p_len = p_len + 2;
}
else {
p_len = p_len + 1;
}
}
}
return p_len;
}
/**
* 功能:控制输出字符串的长度,可区别中英文
* 例如:strvalue("复请Email通知如果不填写则取注册Email",26)
* 这里26是指26个英文字母,也就是13个汉字
* @param xstring 需要检测的字符串
* @return 被按照制定长度截取后的字符串(如果不够长则输出全部字符串)
*/
public String CnLeft(String xstring, int lennum) {
int p_num,i,xx,ascChr;
String xtempstr;
char xchar;
if (CnLength(xstring) <= lennum ) {
xtempstr = xstring;
}
else {
p_num = 0;
xx = 0;
while (p_num < lennum) {
xx = xx + 1;
xchar = xstring.charAt(xx-1);
ascChr = xchar + 0;
if (ascChr > 128) {
p_num = p_num + 2;
if(p_num>lennum) {
xx = xx - 1;
}
}
else {
p_num = p_num + 1;
}
}
xtempstr = xstring.substring(0,xx);
}
return xtempstr;
}
/**
* 功能:将中文字符转变为Unicode为了wap页面使用
* @param xinPara 需要转变的字符串
* @return 转变编码后
*/
public String toUnicode(String xinPara){
char temChr;
int ascChr, i;
String rtStr = new String("");
String inPara = GetNoNull(xinPara);
for(i=0; i<inPara.length(); i++){
temChr=inPara.charAt(i);
ascChr=temChr+0;
//System.out.println(ascChr);
//System.out.println(Integer.toBinaryString(ascChr));
if (ascChr > 128) {
rtStr = rtStr + "&#x" + Integer.toHexString(ascChr) + ";";
}
else {
rtStr = rtStr + temChr;
}
}
return rtStr;
}
/**
* 分割字串
* @param source 原始字符
* @param div 分割符
* @return 字符串数组
*/
public static String[] split(String source,String div){
int arynum = 0,intIdx=0,intIdex=0,div_length = div.length();
if(source.compareTo("")!=0){
if(source.indexOf(div)!=-1){
intIdx = source.indexOf(div);
for(int intCount =1 ; ; intCount++){
if(source.indexOf(div,intIdx+div_length)!=-1){
intIdx= source.indexOf(div,intIdx+div_length);
arynum = intCount;
}
else {arynum+=2;break;}
}
}
else arynum =1;
}
else arynum = 0;
intIdx=0;
intIdex=0;
String[] returnStr = new String[arynum];
if(source.compareTo("")!=0){
if(source.indexOf(div)!=-1){
intIdx = (int)source.indexOf(div);
returnStr[0]= (String)source.substring(0,intIdx);
for(int intCount =1 ; ; intCount++){
if(source.indexOf(div,intIdx+div_length)!=-1){
intIdex=(int)source.indexOf(div,intIdx+div_length);
returnStr[intCount] = (String)source.substring(intIdx+div_length,intIdex);
intIdx = (int)source.indexOf(div,intIdx+div_length);
}
else {
returnStr[intCount] = (String)source.substring(intIdx+div_length,source.length());
break;
}
}
}
else {returnStr[0] = (String)source.substring(0,source.length());return returnStr;}
}
else {return returnStr;}
return returnStr;
}
/**
* 功能:将null的字符串变量变为"",以方便程序使用
* @param xStr 字符串变量
* @return 整理后的字符串
*/
public String GetNoNull(String xStr) {
String xstring;
if (xStr == null){
xstring = "";
}
else{
xstring = xStr;
}
return xstring;
}
/**
* 功能:将字符串加密
* @param xStr 字符串变量
* @return 加密后的字符串
*/
public String toPassword(String xStr) {
String xstring;
xstring = GetNoNull(xStr);
return xstring;
}
/**
* 功能:将字符串解密
* @param xStr 被加密的字符串变量
* @return 解密后的字符串
*/
public String unPassword(String xStr) {
String xstring;
xstring = GetNoNull(xStr);
return xstring;
}
/**
* 功能:判断字符串是否为正整数
* @param xStr 需要被判断的字符串变量
* @return 如果是正整数返回True,否则返回False
*/
public boolean isNumber(String xStr) {
char[] c = xStr.toCharArray();
boolean xjudge = true;
if(xStr.length()>0) {
for (int i = 0; i < c.length; i++) {
char ch = c[i];
if (!Character.isDigit(ch)) {
xjudge = false;
i = c.length;
}
}
}
else {
xjudge = false;
}
return xjudge;
}
/**
* 功能:将10进制数转变为36进制字符串
* @param Number 需要转变的10进制数
* @return 转变后的36进制字符串
*/
public String get36Str(int Number) {
String NewStr = "";
if(Number==0) {
NewStr = "0";
}
while (Number>0) {
int iNumber;
char cNumber;
iNumber = Number % 36;
if (iNumber > 9) {
cNumber = (char) (iNumber + 55);
} else {
cNumber = (char) (iNumber + 48);
}
NewStr = cNumber + NewStr;
Number = (Number - iNumber) / 36;
}
return NewStr;
}
/**
* 功能:获取当前时间标准格式的字符串
* @return 时间字符串
*/
public String getNow() {
String xNow;
Date date01 = new Date();
java.sql.Timestamp date02 = new java.sql.Timestamp(date01.getTime());
xNow = date02.toString();
return xNow;
}
/**
* 功能:获取距离当前时间相差X秒时间标准格式的字符串
* @param Second 相差秒数
* @return 时间字符串
*/
public String getNowS(int Second) {
String xNow;
//获取当前时间之前10秒的时间变量,用于调用需要重新处理的短信息
Calendar tcal01 = Calendar.getInstance();
tcal01.setTime(new Date());
tcal01.add(Calendar.SECOND, Second);
Date date01 = tcal01.getTime();
java.sql.Timestamp date02 = new java.sql.Timestamp(date01.getTime());
xNow = this.GetDate(date02.toString());
return xNow;
}
/**
* 功能:获取距离指定时间相差X秒时间标准格式的字符串
* @param TargetDate 指定时间
* @param Second 相差秒数
* @return 时间字符串
*/
public String getNowS(String TargetDate, int Second) {
String xNow;
//获取当前时间之前10秒的时间变量,用于调用需要重新处理的短信息
Calendar tcal01 = Calendar.getInstance();
tcal01.setTime(this.toDate(TargetDate));
tcal01.add(Calendar.SECOND, Second);
Date date01 = tcal01.getTime();
java.sql.Timestamp date02 = new java.sql.Timestamp(date01.getTime());
xNow = this.GetDate(date02.toString());
return xNow;
}
public String getNowS(String xdate, String TimeType, int TimeNumber) {
Calendar tcal01 = Calendar.getInstance();
Date TargetDate = toDate(xdate);
String xNow = null;
if(TargetDate!=null) {
tcal01.setTime(TargetDate);
if(TimeType.equals("year")) {
tcal01.add(Calendar.YEAR, TimeNumber);
} else if(TimeType.equals("month")) {
tcal01.add(Calendar.MONTH, TimeNumber);
} else if(TimeType.equals("day")) {
tcal01.add(Calendar.DAY_OF_MONTH, TimeNumber);
} else if(TimeType.equals("hour")) {
tcal01.add(Calendar.HOUR_OF_DAY, TimeNumber);
} else if(TimeType.equals("minute")) {
tcal01.add(Calendar.MINUTE, TimeNumber);
} else if(TimeType.equals("second")) {
tcal01.add(Calendar.SECOND, TimeNumber);
}
java.util.Date date01 = tcal01.getTime();
SimpleDateFormat xDateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
xNow = xDateFormat.format(date01);
}
return xNow;
}
/**
* 功能:获取从x到y的随机数(正整数)
* @param xMin 最小值
* @param xMax 最大值
* @return 随机数值
*/
public int getRnd01(int xMin, int xMax) {
int xRnd;
xRnd = 0;
if(xMin>xMax) {
xMin = xMin + xMax;
xMax = xMin - xMax;
xMin = xMin - xMax;
}
xRnd = (xMin) + ((int)((xMax-xMin+1) * java.lang.Math.random()));
return xRnd;
}
/**
* 功能:校验是否格式正确的手机号或电话号码
* @param xNumber 电话号码
* @return 随机数值
*/
public boolean isPhone(String xNumber) {
boolean judgeSign = false;
Pattern p = Pattern.compile("^[1][3][0-9]{9}$"); //校验手机号码
Matcher m = p.matcher(xNumber);
if(m.matches()) {
judgeSign = true;
}
else {
p = Pattern.compile("^([0][1-9][0-9]{1,2})[0-9]{6,8}$"); //校验座机号码
m = p.matcher(xNumber);
if(m.matches()) {
judgeSign = true;
}
}
// System.out.println(xxx + "," + m.matches());
return judgeSign;
}
/**
* 功能:除法运算(小数点后保留2位)
* @param molecule 分子
* @param denominator 分母
*/
public String division(String molecule,String denominator){
float num3 = 0.0f;
float mole = Float.parseFloat(molecule); //(float)molecule1;
float deno = Float.parseFloat(denominator); //(float)denominator1;
//System.out.println("--mole--" + mole + "--" + deno);
if (Float.parseFloat(molecule) != 0) {
num3 = mole / deno;
}
String radio = new java.text.DecimalFormat("###.##").format(num3);
//System.out.println("小数点后面保留二位:"+radio);
return radio;
}
/**
* 功能:Base64编码
* @param xstring 要进行处理的字符串
*/
public String base64_Encode(String xstring) {
String xtempstr = "";
if (xstring == null) {
return null;
}
xtempstr = (new sun.misc.BASE64Encoder()).encode( xstring.getBytes() );
return xtempstr;
}
/**
* 功能:Base64解码
* @param xstring 要进行处理的字符串
*/
public String base64_Decode(String xstring) {
String xtempstr = "";
if (xstring == null) {
return null;
}
try {
sun.misc.BASE64Decoder decoder = new BASE64Decoder();
byte[] b = decoder.decodeBuffer(xstring);
xtempstr = new String(b);
} catch (Exception e) {
return null;
}
return xtempstr;
}
/**大写字符串加1 如AB->AC AZ->BA;如遇到小写字符或ZZ则报溢出错误
* @param xstring 大写字符串
* @return 字符串加1后返回结果
*/
public String StringPlus1(String xstring){
String xtempstr="";
if (xstring == null) {
return null;
}
try {
char xchar[]=xstring.toCharArray();
//System.out.print((int)++xchar[1]);
for(int i=xstring.length()-1;i>=0;i--){
if((int)++xchar[i]>90){
xchar[i]='A';
if(i==0){
System.out.print("溢出!");
return null;
}
}
else
{
System.out.print("");
break;
}
}
for(int j=0;j<xstring.length();j++)
xtempstr=xtempstr+xchar[j];
}catch(Exception e){
System.err.print(e.getMessage());
return null;
}
return xtempstr;
}
}