在实际的开发工作中,对字符串的处理是最常见的编程任务。

本题目即是要求程序对用户输入的串进行处理。具体规则如下:

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.Vector; import javax.print.Doc; public class Format {
public static void main(String[] args) {
Scanner scanner=new Scanner(System.in);
String string=scanner.nextLine();
Vector< Character> vector=new Vector<Character>();
for (int i = 0; i < string.length(); i++) {
vector.add(string.charAt(i));
}
//
int index=0;
while (index<vector.size()) {
//把一段话的首个单词大写
if (index==0&&vector.elementAt(index)>='a'&&vector.elementAt(index)<='z') {
vector.set(index,(char)(vector.elementAt(index)-('a'-'A')) );
}
//去除多个空格
else if (vector.elementAt(index-1)==' '&&vector.elementAt(index)==' ') {
vector.remove(index);
index--;
}
//把段中的单词首字母大写
else if (vector.elementAt(index-1)==' '&&vector.elementAt(index)>='a'&&vector.elementAt(index)<='z') {
vector.set(index, (char)(vector.elementAt(index)-('a'-'A')));
}
//数字后加下划线
else if((vector.elementAt(index)>='a'&&vector.elementAt(index)<='z')&&(vector.elementAt(index-1)>='0'&&vector.elementAt(index-1)<='9')){
vector.add(index, '_');
index++;
}
//数字前加下划线
else if((vector.elementAt(index-1)>='a'&&vector.elementAt(index-1)<='z')&&(vector.elementAt(index)>='0'&&vector.elementAt(index)<='9')){
vector.add(index, '_');
index++;
}
index++;
}
for (int i = 0; i <vector.size(); i++) {
System.out.print(vector.elementAt(i));
}
System.out.println(); }
}

运行结果:

you and     me what  cpp2005program

You And Me What Cpp_2005_program

 方法二:

 import java.util.Scanner;

 import java.util.regex.Matcher;

 import java.util.regex.Pattern;

 /*

  * 本题目即是要求程序对用户输入的串进行处理。具体规则如下:

  *1. 把每个单词的首字母变为大写。

  *2. 把数字与字母之间用下划线字符(_)分开,使得更清晰

  *3. 把单词中间有多个空格的调整为1个空格。

  *我们假设:用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。每个单词间由1个或多个空格分隔。

  *假设用户输入的串长度不超过200个字符。

  */

 public class SimpleString {

         public static void main(String args[]){

                  String str="";

                  str=(new Scanner(System.in)).nextLine();

                  String []str1=str.split("[ ]+");

                  for(int i=0;i<str1.length;i++)str1[i]=String.valueOf((char)(str1[i].charAt(0)+('A'-'a')))+str1[i].substring(1);

                  String s="";

                  for(int i=0;i<str1.length-1;i++)//System.out.print(str1[i]+" ");

                  {

                          s+=str1[i]+" ";

                  }

                  s+=str1[str1.length-1];

                          Pattern p=Pattern.compile("([0-9]+)");

                          Matcher m=p.matcher(s);

                          String fin="";

                          int st=0;

                          while(m.find()){

                                   int start=m.start();

                                   int end=m.end();

                                   fin+=s.substring(st,start);

                                   if(s.charAt(start-1)!=' ')fin+="_";

                                   fin+=m.group(1);

                                   if(s.charAt(end)!=' ')fin+="_";

                                   st=end;

                          }

                          if(st<s.length())fin+=s.substring(st);

                          System.out.println(fin);

         }

 }
 方法三:

 import java.util.Scanner; 

 import java.util.regex.Matcher; 

 import java.util.regex.Pattern; 

 public class Demo02 { 

     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]); 

     } 

     public static void main(String[] args) { 

         Scanner scan = new Scanner(System.in); 

         String s = scan.nextLine(); 

         String[] ss = s.split("[\\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); 

     } 

 } 

最新文章

  1. Apache Lucene(全文检索引擎)—分词器
  2. WCF服务创建与使用(双工模式)
  3. 关于“服务器提交了协议冲突. Section=ResponseStatusLine&quot;问题
  4. SQL2008中Merge Into的用法
  5. App右上角数字
  6. oracle 游标笔记
  7. JavaBean简单及使用
  8. PAT_1002 写出这个数
  9. Jq自定义动画
  10. UVA 11427 - Expect the Expected(概率递归预期)
  11. 文件翻译002片:Process Monitor帮助文档(Part 2)
  12. Windows同时安装Python2、Python3兼容运行
  13. U-Boot Makefile分析(4)具体子Makefile的分析
  14. Visual Studio 2017使用Asp.Net Core构建Angular4应用程序
  15. 聊聊setTimeout和setInterval线程
  16. JS中的PadLeft、PadRight,位数不足,自动补位,String扩展方法
  17. 【代码审计】EasySNS_V1.6 前台XSS跨站脚本漏洞分析
  18. Win10有效降低磁盘100%读写
  19. Tempdb--Snapshot
  20. Linux内核分析第七周学习笔记——Linux内核如何装载和启动一个可执行程序

热门文章

  1. WPF button 圆角制作
  2. MVC入门教程-视图中的Layout使用
  3. [Javascript] MetaProgramming: new.target
  4. [React] React Fundamentals: Build a JSX Live Compiler
  5. GCC 编绎选项 转
  6. Ⅴ.AngularJS的点点滴滴-- 资源和过滤
  7. Windows Server 2008 R2 域控制器部署指南
  8. Bash中的数组
  9. CS=0xFFFF IP=0x0000与CS=F000 IP=FFF0
  10. html input[type=file] css样式美化【转藏】