import java.io.BufferedReader;
import java.io.IOException;
//import java.io.InputStream;
import java.io.InputStreamReader;
/*
* 创建日期 2005-9-27
*
* TODO 要更改此生成的文件的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
/**
* @author firefox
*
* TODO 要更改此生成的类型注释的模板,请转至
* 窗口 - 首选项 - Java - 代码样式 - 代码模板
*/
public class Transform {
static void Encode(String i){
int m,n,x;
StringBuffer char_final=new StringBuffer();
m=i.length();
System.out.println("您输入的字符串长度为"+m);
for(n=0;n<m;n++)
{char current_char=i.charAt(n);
if((current_char>=48)&&(current_char<=57))//是数字时
{if(n==m-1) //如果是最后一个字符
{char_final.append(current_char);}
else if(current_char==48) //如果是0且不是最后一个字符
{char_final.append(current_char);
char_final.append("_");}
else
{for(x=49;x<=i.charAt(n)+1;x++)
{char_final.append(i.charAt(n+1));}
char_final.append("_");
}
}
else if(((current_char>=65)&&(current_char<=90))||
((current_char>=97)&&(current_char<=122)))//是字母时
{char_final.append(current_char);
if(n!=m-1) char_final.append("_");}
else if(current_char==95)
{char_final.append("\\ul");
if(n!=m-1) char_final.append("_");}
else
{char_final.append(current_char);
if(n!=m-1) char_final.append("_");}
}
System.out.println("您选择的是加密!");
System.out.println("加密后的字符串为:"+char_final);
}
static void Decode(String original_char){
System.out.println("您选择的是解密!");
int m,n;
int last_index=-1;
int current_index=0;
StringBuffer char_final=new StringBuffer();
StringBuffer temp_char=new StringBuffer(original_char);
temp_char.append("_");
String i=temp_char.toString();
m=i.length();
for(n=0;n<m;n++)
{
char current_char=i.charAt(n);
if(current_char==95)
{current_index=n;
if(current_index-last_index>2)
{if(i.charAt(n-1)!=i.charAt(n-2))
{char_final.append("_");}
else
{char_final.append(current_index-last_index-2);
}
}
else if(current_index-last_index==2)
{char_final.append(i.charAt(n-1));
}
}
}
System.out.println("您解密后的字符串为:"+char_final);
}
public static void main(String[] args) throws IOException {
String char_original;
String choose;
System.out.println("请输入需要转换的字符串:");
BufferedReader buf_reader1=new BufferedReader(new InputStreamReader(System.in));
char_original=new String(buf_reader1.readLine());
System.out.println("请选择Encode或者Decode");
BufferedReader buf_reader2=new BufferedReader(new InputStreamReader(System.in));
choose=new String(buf_reader2.readLine());
if(choose.equals("Encode")||choose.equals("encode"))
Encode(char_original);
else if(choose.equals("Decode")||choose.equals("decode"))
Decode(char_original);
else
System.out.println("您的输入有误");
}
}
有一个问题:当解密的字符串中连续出现“_”时,我一时想不出好的解决办法。
初学者,对很多方法都不太掌握,编出来的,象C,呵呵。