您的位置:首页 > 其它

表示数字(整合的别人的)

2015-08-15 20:58 246 查看
方案一:

import java.util.Scanner;

public class Main {

public static void main(String[] args) {
Scanner scan = new Scanner(System.in);
char[] strBefore = scan.nextLine().toCharArray();
char[] strAfter = new char[2*strBefore.length];
int sAL = 0;//strAfterLocation

for(int i = 0 ; i < strBefore.length ; i++){
if(i == 0){//对于第一个字符
if(strBefore[i]>='0' && strBefore[i]<='9'){//如果第一个字符是数字
if(strBefore[i+1]>='0' && strBefore[i+1]<='9'){//如果第一个字符是数字,且第二个字符也是数字
strAfter[sAL++]='*';
strAfter[sAL++]=strBefore[i];
}else{//如果第一个字符是数字,且第二个字符不是数字
strAfter[sAL++]='*';
strAfter[sAL++]=strBefore[i];
strAfter[sAL++]='*';
}
}else//第一个字符不是数字
strAfter[sAL++]=strBefore[i];

}else if(i == strBefore.length-1){//对于最后一个字符
if(strBefore[i]>='0' && strBefore[i]<='9'){//如果最后一个字符是数字
if(strBefore[i-1]>='0' && strBefore[i-1]<='9'){//如果最后一个字符是数字,且倒数第二个字符也是数字
strAfter[sAL++]=strBefore[i];
strAfter[sAL++]='*';
}else{//如果最后一个字符是数字,且倒数第二个字符不是数字
strAfter[sAL++]='*';
strAfter[sAL++]=strBefore[i];
strAfter[sAL++]='*';
}
}else//如果最后一个字符不是数字
strAfter[sAL++]=strBefore[i];

}else{//对于中间的字符
if(strBefore[i]>='0' && strBefore[i]<='9'){//如果中间的字符是数字
if((strBefore[i-1]>='0' && strBefore[i-1]<='9') && (strBefore[i+1]>='0' && strBefore[i+1]<='9')){
//前后都是数字
strAfter[sAL++]=strBefore[i];
}else if(!(strBefore[i-1]>='0' && strBefore[i-1]<='9') && (strBefore[i+1]>='0' && strBefore[i+1]<='9')){
//前字母后数字
strAfter[sAL++]='*';
strAfter[sAL++]=strBefore[i];
}else if((strBefore[i-1]>='0' && strBefore[i-1]<='9') && !(strBefore[i+1]>='0' && strBefore[i+1]<='9')){
//前数字后字母
strAfter[sAL++]=strBefore[i];
strAfter[sAL++]='*';
}else if(!(strBefore[i-1]>='0' && strBefore[i-1]<='9') && !(strBefore[i+1]>='0' && strBefore[i+1]<='9')){
//前后都是字母
strAfter[sAL++]='*';
strAfter[sAL++]=strBefore[i];
strAfter[sAL++]='*';
}
}else//如果中间的字符不是数字
strAfter[sAL++]=strBefore[i];

}
}

for(int i = 0 ; i < sAL; i++){
System.out.print(strAfter[i]);
}
}

}


方案二:比较简单。

package oj.test;

import java.util.Scanner;

public class Demo1 {

/**
* @表示数字
* 将一个字符中所有出现的数字前后加上符号“*”,其他字符保持不变
*/
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
str = str.replaceAll("([0-9]+)", "*$1*");
System.out.println(str);

}

}
第二种方案虽然简单,但对转义字符的运用要求比较高。参考文章:http://blog.csdn.net/lily0806/article/details/45026457
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: