文档章节

串的处理

旺仔没馒头
 旺仔没馒头
发布于 2017/09/03 16:16
字数 523
阅读 4
收藏 0

串的处理

题目描述:

串的处理 在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:

  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个字符。

思路:这个题目的难点在于第二个要求,应当考虑多种情况,如:字母数字、数字字母、空格数字、数字空格。当写清条件后,题目自然就出来了。

public class T5 {
	public static void main(String[] args) {
		Scanner in = new Scanner(System.in);
		String str = in.nextLine();
		String s = trans(str);
		String s2 = changeBigWrite(s);
		String s3 = add(s2);
		System.out.println(s3);
	}

	private static String add(String s2) {
		// TODO Auto-generated method stub
		char[] array = s2.toCharArray();
		StringBuilder sb = new StringBuilder();
		for(int i = 0 ; i < array.length ; i++){
			if((array[i]>='a'&&array[i]<='z')||(array[i]>='A'&&array[i]<='Z')){
				if(i+1<array.length&&array[i+1]>='0'&&array[i+1]<='9'){
					sb.append(array[i]+"_");
				}else{
					sb.append(array[i]);
				}
			}else{
				if(array[i]==' '){
					sb.append(" ");
				}else{
					if(i+1<array.length&&(array[i+1]>='a'&&array[i+1]<='z')||(array[i+1]>='A'&&array[i+1]<='Z')){
						sb.append(array[i]+"_");
					}else{
						sb.append(array[i]);
					}
				}
			}
		}
		return sb.toString().trim();
	}

	private static String changeBigWrite(String s) {
		// TODO Auto-generated method stub
		String[] split = s.split(" ");
		StringBuilder sb = new StringBuilder();
		for(String t :split){
			char fir = t.charAt(0);
			if(fir>='a'&&fir<='z'){
				fir = (char) (fir-32);
			}
			sb.append(fir+t.substring(1)+" ");
		}
		return sb.toString().trim();
	}

	private static String trans(String str) {
		// TODO Auto-generated method stub
		String[] split = str.split(" ");
		StringBuilder sb = new StringBuilder();
		for(String t : split){
			if(t!=""){
				sb.append(t+" ");
			}
		}
		return sb.toString().trim();
	}
}

© 著作权归作者所有

共有 人打赏支持
上一篇: 回形嵌套
旺仔没馒头
粉丝 2
博文 18
码字总数 13798
作品 0
济南
程序员
私信 提问
MySQL函数简介

1、常用的文本处理函数 LEFT()(或使用子字符串函数) 返回串左边的字符 LENGTH()(也使用DATALENGTH()或LEN())返回串的长度 LOWER()(Access使用LCASE()) 将串转换为小写 LTRIM() 去掉串左...

小杰滔滔
2016/08/01
29
0
自己写一个编译器:第三天:词法分析

// 请移步《从零开发一个JVM语言》系列。// 由于这篇文章有人收藏就不删除了。。 看下面这个表达式 它表达了什么呢? 人在观察一个表达式的过程中,实际上已经对它进行了词法分析。 没有接受...

wkgcass
2016/02/14
94
0
[转]关于PHP 的单引号和双引号

" "双引号里面的字段会经过编译器解释,然后再当作HTML代码输出。 ' '单引号里面的不进行解释,直接输出。 例如: $abc='my name is tome'; echo $abc //结果是:my name is tom echo '$abc'...

JunDer
2012/11/05
0
0
Oracle解析复杂json的方法

当前在Oracle数据库(11G之前的版本)解析json没有可以直接使用的系统方法,网上流传的PLSQL脚本大多也只可以解析结构较单一的json串,对于结构复杂的json串还无法解析。如此一来导致即便可以在...

xmgdc
2017/07/03
0
0
小蚂蚁学习数据结构(15)——串的认识

概念: 串(字符串):是由0个或多个字符组成的有限序列。 由双引号括起来 如: char str[] = "abcd"; 串相等的条件: 只有当两个串的长度相等,并且各个对应位置的字符都相等时才相等。 串的...

嗜学如命的小蚂蚁
2016/01/15
83
2

没有更多内容

加载失败,请刷新页面

加载更多

小白带你认识netty(三)之NioEventLoop的线程(或者reactor线程)启动(一)

在第一章中,我们看关于NioEventLoopGroup的初始化,我们知道了NioEventLoopGroup对象中有一组EventLoop数组,并且数组中的每个EventLoop对象都对应一个线程FastThreadLocalThread,那么这个...

天空小小
今天
3
0
PHP动态扩展Redis模块

查看已有模块 [root@test-a ~]# /usr/local/php/bin/php -m[PHP Modules]bz2Core...zlib[Zend Modules] 下载包,解压,生成configure文件 [root@test-a ~]# cd /usr/local/src/[ro......

野雪球
今天
3
0
在Ignite中使用线性回归算法

在本系列前面的文章中,简单介绍了一下Ignite的机器学习网格,下面会趁热打铁,结合一些示例,深入介绍Ignite支持的一些机器学习算法。 如果要找合适的数据集,会发现可用的有很多,但是对于...

李玉珏
今天
4
0
Mybatis应用学习——简单使用示例

1. 传统JDBC程序中存在的问题 1. 一个简单的JDBC程序示例: public class JDBCDemo {public static void main(String[] args) {Connection con=null;PreparedStatement statemen...

江左煤郎
今天
4
0
使用JavaScript编写iOS应用业务逻辑

JSAUIKitCocoa使你可以使用JavaScript编写对性能要求不高但可能变动性很大的iOS应用的业务逻辑部分,View组件、需要多线程支持的Model等则直接使用原生对象。 编写方式与React Native相似,但...

neal01
今天
5
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部