表示数字(整合的别人的)
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
相关文章推荐
- 机器学习—决策树算法实现(train+test,matlab)
- Android-带缓存的网络图片查看(网络编程)
- 技术与经济之六:现代化的陷阱
- 黑马程序员——网络编程
- win7旗舰版下使用EasyBCD安装Ubuntu
- 【甘道夫】新的阶段
- 长沙优步Uber奖励政策(7.27~8.2)
- 注册表 ControlSet001、ControlSet002以及CurrentControlSet
- 垂直居中——父元素高度确定的单行文本、父元素高度确定的多行文本
- 黑马程序员——IO流与File类
- Docker基本基础知识了解
- OC学习笔记八 Block
- struts.objectFactory和struts.objectFactory.spring.autoWire
- 基于Android MPAndroidChart实现腾讯QQ群数据统计报表核心功能
- 用jdbc中加载配置文件是出现java.io.FileNotFoundException的解决之道
- Entity Framework相关文章汇总
- MAPGIS 点位置坐标批量导出快速的方法
- 大型网站技术架构
- BC - Zball in Tina Town (质数 + 找规律)
- oracle锁表解除