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

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

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

     } 

 } 

java简单字符串处理的更多相关文章

  1. Java的字符串操作一些简单的思考

    Java的字符串操作 1 .1不可变的String String对象事不可变的,String类中的每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符 ...

  2. JAVA实现字符串反转,借助字符数组实现

    public static String reverseStr(String str) { int len = str.length(); char ch[] = str.toCharArray(); ...

  3. Java入门篇(五)——Java的字符串/String类

    前面在举例时有出现过String的例子,当时肯定有一部分朋友不知道这个是做什么用的.其实String类是Java中一个比较特殊的类,字符串即String类,它不是Java的基本数据类型之一,但可以像基 ...

  4. Java中字符串string的数据类型

    Java中字符串string的数据类型 时间:2017-07-03 08:01:47 YuanMxy 原文:https://blog.csdn.net/YuanMxy/article/details/ ...

  5. Java基础-字符串(String)常用方法

    Java基础-字符串(String)常用方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.java的API概念 Java的API(API:Application(应用) Pr ...

  6. C 封装一个通用链表 和 一个简单字符串开发库

    引言 这里需要分享的是一个 简单字符串库和 链表的基库,代码也许用到特定技巧.有时候回想一下, 如果我读书的时候有人告诉我这些关于C开发的积淀, 那么会走的多直啊.刚参加工作的时候做桌面开发, 服务是 ...

  7. java 替换字符串模板(模板渲染)

    java渲染字符串模板,也就是说在java字符串模板中设置变量字符串,使用变量去渲染指定模板中设置好的变量字符串.下面介绍4种替换模板方式: 1.使用内置String.format String me ...

  8. 用Java将字符串的首字母转换大小写

    在项目开发的时候会需要统一字符串的格式,比如首字母要求统一大写或小写,那用Java如何实现这一功能?下面一起来学习学习. 话不多说,直接上代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 ...

  9. Java内存管理-探索Java中字符串String(十二)

    做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 一.初识String类 首先JDK API的介绍: public final class String extends O ...

随机推荐

  1. eclipse 配置Maven问题解决办法:新建maven工程时报错:Could not resolve archetype org.apache.maven.archetypes .

    此文乃本作者配置maven,被其折磨n天,究极解决方案,好文要顶啊.欢迎致电: zhe-jiang.he@hp.com 首先各maven.archetypes下载地址: http://mirrors. ...

  2. iOS判断iPhone型号

    链接: http://stackoverflow.com/questions/11197509/ios-how-to-get-device-make-and-modelhttp://stackover ...

  3. careercup-栈与队列 3.4

    3.4 在经典问题汉诺塔中,有3根柱子及N个不同大小的穿孔圆盘,盘子可以滑入任意一根柱子.一开始,所有盘子自底向上从大到小依次套在第一根柱子上(即每一个盘子只能放在更大的盘子上面).移动圆盘时有以下限 ...

  4. 关于Clone 的方法使用

    package cn.hncu.day7.clone.v1;//克隆的套路:// 第1步:重写User类的clone()方法,以供外面调用.因为外面的类无法直接调用User类父类中的clone()方法 ...

  5. vs2010 Express 下载连接

    记录: vs2010  Express 下载连接 正式下载链接: http://download.microsoft.com/download/5/C/1/5C156922-CA10-49D8-B7E ...

  6. Silverlight OOB 程序自动更新

    Silverlight OOB 程序 提供了非常方便的自动更新功能! 要让 Silverlight OOB 安装到客户端电脑后实现自动更新,必须实现以下两个条件: 一.为 程序的 xap  文件进行签 ...

  7. linux vncserver配置

    需要使用Linux的远程桌面服务,xmanager之前用过,感觉一般,这次尝试下vnc 我的操作系统是centos7 一服务端 安装VNCServer #yum -y install vnc *vnc ...

  8. chrome vim插件vimnum快捷键与使用

    Navigating the page j : Scroll down (scrollDown) k : Scroll up (scrollUp) h : Scroll left (scrollLef ...

  9. 在DropDownList里显示多级分类

    protected void ddlBind() { DataTable dt = new DataTable(); ddlCategoryId.DataSource = getList(" ...

  10. PHP的数据库 之 关闭问题

    首先,PHP由于有垃圾回收机制,所以数据库即使你不手动关闭,也有自动去关闭的机制, 这里就和操作文本流不同,文本流需要手动去关闭,不然会发生内存浪费现象 并且,PHP在同时连接多个DB的时候,连接到一 ...