串的简单处理(不一样的方法)
在实际的开发工作中,对字符串的处理是最常见的编程任务。
本题目即是要求程序对用户输入的串进行处理。具体规则如下:
把每个单词的首字母变为大写。
把数字与字母之间用下划线字符(_)分开,使得更清晰
把单词中间有多个空格的调整为1个空格。
例如:
用户输入:
you and me what cpp2005program
则程序输出:
You And Me What Cpp_2005_program
用户输入:
this is a 99cat
则程序输出:
This Is A 99_cat
我们假设:用户输入的串中只有小写字母,空格和数字,不含其它的字母或符号。
每个单词间由1个或多个空格分隔。
假设用户输入的串长度不超过200个字符。
package 串的简单处理;
import java.util.Scanner;
public class Project6 {
public static void main(String[] args) {
Scanner in = new Scanner(System.in);
String string = in.nextLine();
String a[] = string.split(" +"); //public String[] split(String regex)根据给定的正则表达式的匹配来拆分此字符串。+号表示一个或多个的意思
//将字符串拆分成字符串数组,然后再把每一个单词单独进行分析
for (int i = 0; i < a.length; i++) {
char b[] = a[i].toCharArray();
char c[] = a[i].toCharArray();
if (b[0] >= 'a' && b[0] <= 'z')
b[0] = (char) (b[0] - 32); //首字母大写
for (int j = 0; j < b.length; j++) {
c[j] = b[j];
if ((b[j] >= '0' && b[j] <= '9') && (b[j + 1] >= 'a' && b[j + 1] <= 'z')) {
c[j + 1] = '_'; //把数字与字母之间用下划线字符(_)分开
j++;
}
}
a[i] = String.valueOf(c); //将修改后的字符串重新赋值给a数组
}
for (int k = 0; k < a.length; k++) {
System.out.print(a[k] + ' '); //输出字符串
}
}
}
运行结果
运行结果(多个空格)
开头加空格(留给各位去修改代码,提示:对于split如果字符串前面是空格,分割出来后a[0]是空格)