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

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

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. MATLAB中导入数据:importdata函数

    用load函数导入mat文件大家都会.可是今天我拿到一个数据,文件后缀名竟然是'.data'.该怎么读呢? 我仅仅好用matlab界面Workspace区域的"import data&quo ...

  2. [rxjs] Creating An Observable with RxJS

    Create an observable var Observable = Rx.Observable; var source = Observable.create(function(observe ...

  3. 数据结构与算法/leetcode/lintcode题解

    http://algorithm.yuanbin.me/zh-hans/index.html

  4. Python 基础学习

    http://www.cnblogs.com/Wxtrkbc/p/5486253.html

  5. 怎样查看MySql数据库物理文件存放位置

    想导出mysql中的数据库文件,死活找不到,网上说在配置文件中有路径,可是我打开我的配置文件,里边的代码全都是注释掉的,没有一句有用的.后来在某一论坛上找到解决方法了,记录下来. 使用如下命令: my ...

  6. linux mysql 授权以及 iptables开启3306

    mysql授权ip段访问mysql grant all privileges on *.* to 'yang'@'192.168.1.%' identified by '123456'; linux ...

  7. Python学习入门教程,字符串函数扩充详解

    因有用户反映,在基础文章对字符串函数的讲解太过少,故写一篇文章详细讲解一下常用字符串函数.本文章是对:程序员带你十天快速入门Python,玩转电脑软件开发(三)中字符串函数的详解与扩充. 如果您想学习 ...

  8. php读取操作大文件

    在php中,对于文件的读取时,最快捷的方式莫过于使用一些诸如file.file_get_contents之类的函数,简简单单的几行代码就能 很漂亮的完成我们所需要的功能.但当所操作的文件是一个比较大的 ...

  9. Spring3 + Spring MVC+ Mybatis 3+Mysql 项目整合

    项目环境背景: 操作系统:win7 JDK:1.7 相关依赖包,截图如下:

  10. 学习java随笔第八篇:封装、继承、多态

    java和c#一样都是面向对象的语言. 面向对象的语言有三大特征:封装.继承.多态 封装 封装:隐藏对象的属性和实现细节,仅对外公开接口,控制在程序中属性的读和修改的访问级别. class Perso ...