java简单字符串处理
在实际的开发工作中,对字符串的处理是最常见的编程任务。
本题目即是要求程序对用户输入的串进行处理。具体规则如下:
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简单字符串处理的更多相关文章
- Java的字符串操作一些简单的思考
Java的字符串操作 1 .1不可变的String String对象事不可变的,String类中的每一个看起来会修改String值的方法,实际上都是创建了一个全新的String对象,以包含修改后的字符 ...
- JAVA实现字符串反转,借助字符数组实现
public static String reverseStr(String str) { int len = str.length(); char ch[] = str.toCharArray(); ...
- Java入门篇(五)——Java的字符串/String类
前面在举例时有出现过String的例子,当时肯定有一部分朋友不知道这个是做什么用的.其实String类是Java中一个比较特殊的类,字符串即String类,它不是Java的基本数据类型之一,但可以像基 ...
- Java中字符串string的数据类型
Java中字符串string的数据类型 时间:2017-07-03 08:01:47 YuanMxy 原文:https://blog.csdn.net/YuanMxy/article/details/ ...
- Java基础-字符串(String)常用方法
Java基础-字符串(String)常用方法 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.java的API概念 Java的API(API:Application(应用) Pr ...
- C 封装一个通用链表 和 一个简单字符串开发库
引言 这里需要分享的是一个 简单字符串库和 链表的基库,代码也许用到特定技巧.有时候回想一下, 如果我读书的时候有人告诉我这些关于C开发的积淀, 那么会走的多直啊.刚参加工作的时候做桌面开发, 服务是 ...
- java 替换字符串模板(模板渲染)
java渲染字符串模板,也就是说在java字符串模板中设置变量字符串,使用变量去渲染指定模板中设置好的变量字符串.下面介绍4种替换模板方式: 1.使用内置String.format String me ...
- 用Java将字符串的首字母转换大小写
在项目开发的时候会需要统一字符串的格式,比如首字母要求统一大写或小写,那用Java如何实现这一功能?下面一起来学习学习. 话不多说,直接上代码 ? 1 2 3 4 5 6 7 8 9 10 11 12 ...
- Java内存管理-探索Java中字符串String(十二)
做一个积极的人 编码.改bug.提升自己 我有一个乐园,面向编程,春暖花开! 一.初识String类 首先JDK API的介绍: public final class String extends O ...
随机推荐
- springMVC零配置吐槽
此时此刻,哥哥我不得不大大的吐槽一下.从github上down下来一个spring-mvc的chat演示样例,牛逼作者用的是注解的方式,项目全然零配置.而我眼下用的springMVC框架,还是在xml ...
- 关于64位Linux配置android开发环境出现 No such file or directory
前几天在64位系统上部署android开发环境的时候出现了这种问题 /aapt: No such file or directory 通过谷老师,知道原理android SDK里面的程序全是32位的, ...
- C#实现FTP文件夹下载功能【转载】
网上有很多FTP单个文件下载的方法,前段时间需要用到一个FTP文件夹下载的功能,于是找了下网上的相关资料结合MSDN实现了一段FTP文件夹下载的代码. 实现的思路主要是通过遍历获得文件夹下的所有文件, ...
- [rxjs] Creating An Observable with RxJS
Create an observable var Observable = Rx.Observable; var source = Observable.create(function(observe ...
- abap中的弹出窗体函数
POPUP_TO_CONFIRM_WITH_MESSAGE 会话框确实处理步骤; 用识别正文POPUP_TO_SELECT_MONTH 日历:弹出 POPUP_TO_C ...
- PCAP 抓包
PCAP是一个数据包抓取库, 很多软件都是用它来作为数据包抓取工具的. WireShark也是用PCAP库来抓取数据包的.PCAP抓取出来的数据包并不是原始的网络字节流,而是对其进行从新组装,形成一种 ...
- java 中能否使用 动态加载的类(Class.forName) 来做类型转换?
今天同事提出了一个问题: 将对象a 转化为类型b,b 的classpath 是在配置文件中配置的,需要在运行中使用Class.forName 动态load进来,因为之前从来没有想过类似的问题,所以懵掉 ...
- Java基础知识强化之集合框架笔记49:键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)按照总分从高到低输出到控制台
1. 键盘录入5个学生信息(姓名,语文成绩,数学成绩,英语成绩)按照总分从高到低输出到控制台: 分析: A: 定义学生类 B: 创建一个TreeSet集合 C: 总分从高到底如何实现 ...
- PLSQL Developer操作
1.设置 1)下载32位Oracle InstantClient 2)将Oracle InstantClient解压到某目录 3)设置环境变量(修改NLS_LANG和TNS_ADMIN环境变量)对 ...
- Lucene技术杂谈
Lucene教程 1 lucene简介 1.1 什么是lucene Lucene是一个全文搜索框架,而不是应用产品.因此它并不像www.baidu.com 或者google Desktop那么 ...