java 如果是数字,直接添加进字符串;如果是字母,偏移后添加进字符串;如...
发布网友
发布时间:2024-10-04 19:10
我来回答
共3个回答
热心网友
时间:2024-10-05 11:26
我大概写了方法,你改写下,我不想打那么多英文:
public class Test {
/**
* java 如果是数字,直接添加进字符串;如果是字母,偏移后添加进字符串;如果是空格,替换成自定义的位移符后添加进字符串;如果是标点符号,
* 1如果选择包括标点符号,复制进字符串;2如果选择不包括标点符号,不复制;
* 最好选择是否循环?最好不用数组。
* @param args
*/
public static void main(String[] args) {
Test t = new Test();
String str="hello world!";
t.flag=true;
t.wyNum = 1;
t.wy="_";
print(t.getStr(str));
}
/**
* 正则表达式常量
*/
static final String num = "[0-9]";
static final String zm = "[a-zA-Z]";
static final String sp = "\\s";
static final String bd = "[,./<>?;‘:“!]";
/**
* 自定义位移符 ,默认“_”
*/
private String wy = "_";
/**
* 是否包含标点符号,默认为true
*/
private boolean flag = true;
/**
* 字母位移的位数,默认为4
*/
private int wyNum = 4;
public String getWy() {
return wy;
}
public void setWy(String wy) {
this.wy = wy;
}
public boolean isFlag() {
return flag;
}
public void setFlag(boolean flag) {
this.flag = flag;
}
public int getWyNum() {
return wyNum;
}
public void setWyNum(int wyNum) {
this.wyNum = wyNum;
}
/**是否是数字*/
public boolean isNum(String str) {
return str.matches(num);
}
/**是否是字母*/
public boolean isZm(String str) {
return str.matches(zm);
}
/**是否是空格*/
public boolean isSp(String str) {
return str.matches(sp);
}
/**是否是标点*/
public boolean isBd(String str) {
return str.matches(bd);
}
/**把int转换成char*/
public String getChar(int b) {
return (char)b+"";
}
/**
* 把字符串转换主逻辑
* @param str
* @return
*/
public String getStr(String str) {
byte[] bts=str.getBytes();
String result="";
for(byte b:bts){
String bt = getChar(b);
if(isNum(bt)){//数字
result += bt;
}else if(isZm(bt)){//字母
result += getChar(bt.getBytes()[0]+wyNum);
}else if(isSp(bt)){//空格
result += wy;
}else if(isBd(bt)){//标点符号
if(flag) result += bt;
}
}
return result;
}
/**
* 打印的方法
* @param o
*/
public static void print(Object o) {
System.out.println(o);
}
}
你要把赋值的改成控制台输入
热心网友
时间:2024-10-05 11:27
如果是字母,偏移后添加进字符串
这句没看太明吧
热心网友
时间:2024-10-05 11:29
难倒不难。。就是懒得写这堆打印的。。