- 浏览: 559084 次
- 性别:
- 来自: 武汉
文章分类
最新评论
-
北月与南安:
哥哥不要秀我,答案是11.38,你算出来36.43,要求N个点 ...
平均距离 -
xiao_android_jun:
[color=red][ size=xx-small ...
Android 之 进程的概念介绍 -
明子健:
小伙子,很有前途哦
《将博客搬至CSDN》 -
1140566087:
dugujiujian 写道R.layout.simple_s ...
Android 之 下拉(Spinner) 组件示例 -
dugujiujian:
R.layout.simple_spinner_dropdow ...
Android 之 下拉(Spinner) 组件示例
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
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个字符。
要求考生把所有类写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。相关的工程文件不要拷入。请不要使用package语句。
另外,源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。
每种解法都有自己的特点,我写的只是其中的一种,也不一定是正则就是最简单的 !
同意,有时候本来一个简单的问题非要人为的去复杂化,这就是目前我面对的环境,不知道你有没有遇到这样的情况
每种解法都有自己的特点,我写的只是其中的一种,也不一定是正则就是最简单的 !
使用正则啊,可以! 谢啦...
这个,按题目的要求是单词之间留有空格的!不考试连续输入的情况
这样的嗦,首先做整个字符串的空格匹配,也就是说保证第一次过滤后没有重复空格的出现;
然后按照空格分隔成String[],对每一个元素做第一个字符匹配,也就是字符替换大写;最后做下划线匹配,诸如[d][a-z]/[A-Z]或[a-z]/[A-Z][d]做下划线添加。都用正则代码更简单易懂。
虚心受教,请问你有没更精简的方法,更加的明白,如果可以的话,求指导!
这个,按题目的要求是单词之间留有空格的!不考试连续输入的情况
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个字符。
要求考生把所有类写在一个文件中。调试好后,存入与考生文件夹下对应题号的“解答.txt”中即可。相关的工程文件不要拷入。请不要使用package语句。
另外,源程序中只能出现JDK1.5中允许的语法或调用。不能使用1.6或更高版本。
package 字符串拼接; import java.util.ArrayList; import java.util.Scanner; //you and me what cpp2005program //则程序输出: //You And Me What Cpp_2005_program public class Main { public static void main(String[] args){ String x = new Scanner(System.in).nextLine(); combineStr(x); } public static void combineStr(String x){ //获取处理后的数据集合 ArrayList<String> list = repair(x); //用于判断数字的字符串 String intStr = "0123456789"; //获取每个字符串进行字符的拼接转换 String result = ""; for(int i=0;i<list.size();i++){ //取出一个字符 String temp = list.get(i); //初始化结果值 result = temp; //进行数字与字母的判断 for(int k=0;k<temp.length()-1;k++){ if(intStr.indexOf(temp.charAt(k))!=-1 && intStr.indexOf(temp.charAt(k+1))==-1){ // 此时判断条件为数字 // 8a 返回替换后的字符,原字符不变 result = result.replace(temp.substring(k, k+2), (temp.charAt(k)+"_"+temp.charAt(k+1))); }else if(intStr.indexOf(temp.charAt(k))==-1 && intStr.indexOf(temp.charAt(k+1))!=-1){ //字母数字 result = result.replace(temp.substring(k, k+2), (temp.charAt(k)+"_"+temp.charAt(k+1))); } } System.out.print(result+" "); } } //获取用户输入的,去掉重复的空白符 public static ArrayList<String> repair(String x){ //保存首字符转为大写后的单词 ArrayList<String> list = new ArrayList<String>(); //用于判断数字的字符串 String intStr = "0123456789"; String[] arr = x.split(" "); for(int i=0;i<arr.length;i++){ if(!arr[i].equals("")){ //对每一个字符进行判断 if( intStr.indexOf(arr[i].charAt(0))==-1){ // 对应的字符为字母而不是数字,==-1表示没有找到数字,则为字母 String newString = (arr[i].charAt(0)+"").toUpperCase()+arr[i].substring(1); list.add(newString); }else{ list.add(arr[i]); } } } return list; } }
评论
9 楼
kjmmlzq19851226
2013-07-09
1140566087 写道
kjmmlzq19851226 写道
不知道你有没有发现一个问题?当你输入a1b2c3d4时,得到的输出为A_1b_2c_3d_4,而不是A_1_b_2_c_3_d_4。因为m.find()会自动设置next index,所以while (m.find()) {
s = s.replace(m.group(), m.group().substring(0, 1) + "_" + m.group().substring(1));
}应该修改为int i = 0;while (m.find(i)) {
s = s.replace(m.group(), m.group().substring(0, 1) + "_" + m.group().substring(1));
i++;}
s = s.replace(m.group(), m.group().substring(0, 1) + "_" + m.group().substring(1));
}应该修改为int i = 0;while (m.find(i)) {
s = s.replace(m.group(), m.group().substring(0, 1) + "_" + m.group().substring(1));
i++;}
每种解法都有自己的特点,我写的只是其中的一种,也不一定是正则就是最简单的 !
同意,有时候本来一个简单的问题非要人为的去复杂化,这就是目前我面对的环境,不知道你有没有遇到这样的情况
8 楼
1140566087
2013-07-08
kjmmlzq19851226 写道
不知道你有没有发现一个问题?当你输入a1b2c3d4时,得到的输出为A_1b_2c_3d_4,而不是A_1_b_2_c_3_d_4。因为m.find()会自动设置next index,所以while (m.find()) {
s = s.replace(m.group(), m.group().substring(0, 1) + "_" + m.group().substring(1));
}应该修改为int i = 0;while (m.find(i)) {
s = s.replace(m.group(), m.group().substring(0, 1) + "_" + m.group().substring(1));
i++;}
s = s.replace(m.group(), m.group().substring(0, 1) + "_" + m.group().substring(1));
}应该修改为int i = 0;while (m.find(i)) {
s = s.replace(m.group(), m.group().substring(0, 1) + "_" + m.group().substring(1));
i++;}
每种解法都有自己的特点,我写的只是其中的一种,也不一定是正则就是最简单的 !
7 楼
kjmmlzq19851226
2013-07-08
不知道你有没有发现一个问题?当你输入a1b2c3d4时,得到的输出为A_1b_2c_3d_4,而不是A_1_b_2_c_3_d_4。因为m.find()会自动设置next index,所以while (m.find()) {
s = s.replace(m.group(), m.group().substring(0, 1) + "_" + m.group().substring(1));
}应该修改为int i = 0;while (m.find(i)) {
s = s.replace(m.group(), m.group().substring(0, 1) + "_" + m.group().substring(1));
i++;}
s = s.replace(m.group(), m.group().substring(0, 1) + "_" + m.group().substring(1));
}应该修改为int i = 0;while (m.find(i)) {
s = s.replace(m.group(), m.group().substring(0, 1) + "_" + m.group().substring(1));
i++;}
6 楼
1140566087
2013-07-08
kjmmlzq19851226 写道
public StringBuffer changeString(String content) {
String patSpace = "\\s{2,}"; // 匹配连续空格
content = Pattern.compile(patSpace).matcher(content).replaceAll(" ");
String[] contents = content.split("\\s");
StringBuffer result = new StringBuffer(); // 最终输出
for (String s : contents) {
String patFirst = "^[a-z]"; // 匹配小写首字母
Boolean isLower = Pattern.compile(patFirst).matcher(s).find();
if (isLower) { // 首字母大写
s = Pattern.compile("^[a-z]").matcher(s)
.replaceAll(s.substring(0, 1).toUpperCase());
}
String patOther = "[a-zA-Z]\\d|\\d[a-zA-Z]"; // 匹配数字毗邻字母组合
Matcher m = Pattern.compile(patOther).matcher(s);
while (m.find()) {
// 字母、数字添加下划线分隔
s = s.replace(m.group(), m.group().substring(0, 1) + "_" + m.group().substring(1));
}
result.append(s).append(" ");
}
return result;
}
String patSpace = "\\s{2,}"; // 匹配连续空格
content = Pattern.compile(patSpace).matcher(content).replaceAll(" ");
String[] contents = content.split("\\s");
StringBuffer result = new StringBuffer(); // 最终输出
for (String s : contents) {
String patFirst = "^[a-z]"; // 匹配小写首字母
Boolean isLower = Pattern.compile(patFirst).matcher(s).find();
if (isLower) { // 首字母大写
s = Pattern.compile("^[a-z]").matcher(s)
.replaceAll(s.substring(0, 1).toUpperCase());
}
String patOther = "[a-zA-Z]\\d|\\d[a-zA-Z]"; // 匹配数字毗邻字母组合
Matcher m = Pattern.compile(patOther).matcher(s);
while (m.find()) {
// 字母、数字添加下划线分隔
s = s.replace(m.group(), m.group().substring(0, 1) + "_" + m.group().substring(1));
}
result.append(s).append(" ");
}
return result;
}
使用正则啊,可以! 谢啦...
5 楼
kjmmlzq19851226
2013-07-08
public StringBuffer changeString(String content) {
String patSpace = "\\s{2,}"; // 匹配连续空格
content = Pattern.compile(patSpace).matcher(content).replaceAll(" ");
String[] contents = content.split("\\s");
StringBuffer result = new StringBuffer(); // 最终输出
for (String s : contents) {
String patFirst = "^[a-z]"; // 匹配小写首字母
Boolean isLower = Pattern.compile(patFirst).matcher(s).find();
if (isLower) { // 首字母大写
s = Pattern.compile("^[a-z]").matcher(s)
.replaceAll(s.substring(0, 1).toUpperCase());
}
String patOther = "[a-zA-Z]\\d|\\d[a-zA-Z]"; // 匹配数字毗邻字母组合
Matcher m = Pattern.compile(patOther).matcher(s);
while (m.find()) {
// 字母、数字添加下划线分隔
s = s.replace(m.group(), m.group().substring(0, 1) + "_" + m.group().substring(1));
}
result.append(s).append(" ");
}
return result;
}
String patSpace = "\\s{2,}"; // 匹配连续空格
content = Pattern.compile(patSpace).matcher(content).replaceAll(" ");
String[] contents = content.split("\\s");
StringBuffer result = new StringBuffer(); // 最终输出
for (String s : contents) {
String patFirst = "^[a-z]"; // 匹配小写首字母
Boolean isLower = Pattern.compile(patFirst).matcher(s).find();
if (isLower) { // 首字母大写
s = Pattern.compile("^[a-z]").matcher(s)
.replaceAll(s.substring(0, 1).toUpperCase());
}
String patOther = "[a-zA-Z]\\d|\\d[a-zA-Z]"; // 匹配数字毗邻字母组合
Matcher m = Pattern.compile(patOther).matcher(s);
while (m.find()) {
// 字母、数字添加下划线分隔
s = s.replace(m.group(), m.group().substring(0, 1) + "_" + m.group().substring(1));
}
result.append(s).append(" ");
}
return result;
}
4 楼
kjmmlzq19851226
2013-07-08
1140566087 写道
kjmmlzq19851226 写道
有点儿混乱,代码也不够简洁,像匹配纯数字这种问题最好使用正则。而且处理的问题比较奇怪,如果用户输入youand,你也认为这是一个单词?
这个,按题目的要求是单词之间留有空格的!不考试连续输入的情况
这样的嗦,首先做整个字符串的空格匹配,也就是说保证第一次过滤后没有重复空格的出现;
然后按照空格分隔成String[],对每一个元素做第一个字符匹配,也就是字符替换大写;最后做下划线匹配,诸如[d][a-z]/[A-Z]或[a-z]/[A-Z][d]做下划线添加。都用正则代码更简单易懂。
3 楼
1140566087
2013-07-06
kjmmlzq19851226 写道
有点儿混乱,代码也不够简洁,像匹配纯数字这种问题最好使用正则。而且处理的问题比较奇怪,如果用户输入youand,你也认为这是一个单词?
虚心受教,请问你有没更精简的方法,更加的明白,如果可以的话,求指导!
2 楼
1140566087
2013-07-06
kjmmlzq19851226 写道
有点儿混乱,代码也不够简洁,像匹配纯数字这种问题最好使用正则。而且处理的问题比较奇怪,如果用户输入youand,你也认为这是一个单词?
这个,按题目的要求是单词之间留有空格的!不考试连续输入的情况
1 楼
kjmmlzq19851226
2013-07-05
有点儿混乱,代码也不够简洁,像匹配纯数字这种问题最好使用正则。而且处理的问题比较奇怪,如果用户输入youand,你也认为这是一个单词?
发表评论
-
第100002个素数
2013-07-08 12:59 1889素数就是不能再进行等分的整数。比如:7,11。而9不是 ... -
古代赌局
2013-07-08 12:59 1210【编程题】(满分23分) ... -
地址转换
2013-07-07 16:41 1411【编程题】(满分21分) Excel是最常用的办公 ... -
全排列,精简
2013-07-07 13:49 1186package 全排列; import java.uti ... -
买不到的数目,组合问题
2013-07-06 19:02 1669标题:买不到的数目 小明开了一家糖果店。他别出心裁 ... -
取小数的循环体
2013-07-03 17:17 23611/7 = 0.142857142... 是个无限循环小数。 ... -
使用二进制替代解决全排列问题
2013-06-29 17:04 1527//从键盘读入一个由字母构成的串(不大于30个字符)。 // ... -
双层棱形
2013-05-06 21:04 830import java.io.BufferedWriter; ... -
拍七游戏
2013-05-04 09:25 2018标题:拍7游戏 许多人都曾经玩过“拍七”游戏。规则 ... -
连续平方数
2013-05-04 09:14 1340// 连续平方数 //标题: 连续平方数 // //为了表示 ... -
分解质因式 完数
2013-05-04 08:42 1221// 例如:90 = 2*3*5*5 public cl ... -
最长连续字符
2013-05-03 16:06 1255// 找出一个二进制中连续的 1 或 连续的 0 出现 ... -
跳格子
2013-05-03 14:06 1651//富老师玩跳格游戏,规则如下:从起点开始,每次可以向前跳 ... -
警察110
2013-05-03 14:06 820package com; // 题目:给定:123456 ... -
连续多个数的最小公倍数
2013-05-03 14:07 2532package com; //为什么1小时有60分钟,而 ... -
递归实现字符串反转
2013-05-06 21:05 1458//递归实现字符串反转 public class Tit ... -
孪生素数
2013-05-04 08:42 1912//孪生素数 //所谓孪生素数指的就是间隔为 2 的 ... -
圆周率
2013-05-02 16:30 1101//圆周率 //我国古代数学家对圆周率方面的研究工作 ... -
正方形的回文
2013-05-02 16:23 1019import java.util.Scanner; // ... -
字符串处理 镜像对称 中心对称
2013-05-01 09:52 3215package com; public class Sn ...
相关推荐
FORTRAN 字符串拼接 在 Fortran 语言中,字符串拼接是非常重要的操作之一。它可以将整数或实数类型转换为字符串类型,以便于文件命名、数据读取和写入等操作。在本节中,我们将详细介绍 FORTRAN 字符串拼接的方法和...
在以太坊智能合约开发中,处理字符串拼接是一个常见的需求。不过,在Solidity编程语言中,由于其特定的类型系统和内存管理机制,没有像其他高级编程语言(如JavaScript或Python)中那样直接支持字符串拼接运算符。...
JAVA的字符串拼接与性能 概述:本文主要研究的是JAVA的字符串拼接的性能,原文中的测试代码在功能上并不等价,导致concat的测试意义不大。不过原作者在评论栏给了新的concat结果,如果有兴趣的同学建议自己修改代码...
"字符串拼接工具"就是针对这类需求而设计的小型实用程序。它能够帮助开发者快速、有效地组合多个字符串,添加前缀或后缀,使得多行文本的格式化变得简单。 在编程中,字符串拼接通常是通过字符串连接运算符或者使用...
在SQL中,将多行数据合并为一行,尤其是在某一列进行字符串拼接,是一项常见的需求。这通常用于汇总数据、创建报表或者为了分析目的而整合信息。本文将深入探讨如何利用SQL实现多行数据的合并,特别关注字符串拼接的...
整理文档,搜刮出一个jquery拼接ajax 的json和字符串拼接的代码,稍微整理精简一下做下分享。 jQuery拼接字符串ajax <form id="myForm" action="#"> <input name="name"/> <input name="age"/>...
* 超大字符串拼接,单个字符串4000、分隔符100,可拼出超4000的超长字符串 * 可自定义指定分隔符separator * 可自定义指定排序字段sequence,对于数字或日期类型的字段,先转为字符串,比如to_char(line, 'FM000'...
在Robot Framework中,字符串拼接可以通过内置的`Catenate`关键字实现。`Catenate`提供了多种用法,可以根据实际需求选择合适的方式。 1. **基本用法**: ```robotframework ${result}= Catenate Hello World ``...
本文将深入探讨四个主要概念:分隔符、注释、标识符以及字符串拼接,同时也会提及空格的使用。 首先,让我们来了解分隔符。与许多其他编程语言(如JAVA和PHP)不同,Golang不需要在每一行末尾添加英文分号(;)。这...
在本教程中,我们将聚焦于如何将Excel数据批量导入到PostgreSQL数据库,特别关注一种常见的方法——通过字符串拼接的方式。PostgreSQL是一个功能强大的开源关系型数据库管理系统,而Excel则是广泛使用的电子表格工具...
字符串拼接方式.png来自尚硅谷
Python 字符串拼接方法详解 Python 中的字符串拼接方法有多种,本文将通过实例详细讲解这几种方法的使用及各自的特点。 字符串拼接方法一:使用“+”连接 Python 中最简单的字符串拼接方法是使用“+”连接。例如...
基于C语言的字符串拼接是一种常见的操作,用于将两个或多个字符串合并成一个完整的字符串。在C语言中,字符串实际上是以空字符 '\0' 结尾的字符数组。字符串拼接可以通过标准库函数 strcat 实现,或者手动遍历和复制...
在Java编程中,字符串拼接是一项常见的操作,特别是在构建动态字符串或者处理文本数据时。本文主要探讨了在Java中几种不同的字符串拼接方法的性能差异,包括使用操作符`+`、`String.concat()`、`StringBuffer.append...
标题"StringBuilder字符串拼接工具"暗示了我们讨论的核心是关于如何利用`StringBuilder`进行高效的字符串处理。在Java程序中,当需要动态地构建字符串,尤其是在循环或者递归中,`StringBuilder`是首选工具。它的...
在IT领域,字符串拼接和聚合函数是编程中常见的操作,尤其在处理数据时显得尤为重要。字符串拼接是指将两个或多个字符串连接成一个新字符串的过程,而聚合函数则是在一组值上执行计算并返回单个值的函数,通常用于...
c 字符串拼接C语言 strcat() 函数用来将两个字符串连接(拼接)起来。头文件:string.h语法/原型:char*strcat(char* strDestination, const char* strSource);参数说明:•strDestination:目的字符串;•strSource...
c 字符串拼接在上面的代码中,我们定义了两个字符串`str1`和`str2`,分别赋值为"Hello"和"World!"。然后,我们使用加号运算符将两个字符串拼接起来,并将结果存储在`result`变量中。最后,使用`std::cout`输出拼接后...