题目要求:
串的处理
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
1. 把每个单词的首字母变为大写。
2. 把数字与字母之间用下划线字符(_)分开,使得更清晰
3. 把单词中间有多个空格的调整为1个空格。
例如:
用户输入:
you and me what cpp2005program
则程序输出:
You And Me What Cpp_2005_program
用户输入:
this is a 99cat
则程序输出:
This Is A 99_cat
我们假设:用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个单词间由1个或多个空格分隔。
假设用户输入的串长度不超过200个字符。
代码:
/* * 串的简单处理 */ import java.util.Scanner; import java.util.regex.Matcher; import java.util.regex.Pattern; public class Main { public static void main(String[] args) { Scanner in=new Scanner(System.in); String str=in.nextLine(); String []ss=str.split("[\\s]+");//“,\\s*|\\s+”是正则的表达式,\s表示空格,应该是以空格开头或结尾都会被截取到。 for(int i=0;i<ss.length;i++) { String up=(""+ss[i].charAt(0)).toUpperCase();//首字母大写 StringBuffer sb=new StringBuffer(ss[i]); ss[i]=sb.replace(0,1,up).toString(); Matcher m=Pattern.compile("\\d+").matcher(ss[i]); while(m.find()) { String num=new String(m.group()); String num2=num; num2="_"+num+"_";//数字前加“——” ss[i]=ss[i].replace(num,num2);//替换字符串 if(ss[i].startsWith("_"))//去掉头部 { ss[i]=ss[i].substring(1); } if(ss[i].endsWith("_"))//去掉尾部 { ss[i]=ss[i].substring(0,ss[i].length()-1);//得到字符串中的子串 } } } print(ss); } public static void print(String[]s) { for(int i=0;i<s.length-1;i++) { System.out.print(s[i]+" "); } System.out.println(s[s.length-1]); } }