package lanQiao;
import java.util.Scanner;
import java.util.Vector;
/**
* 串的处理:
* 本题目即是要求程序对用户输入的串进行处理,具体规则如下:
* 1. 把每个单词的首字母变为大写。
* 2. 把数字与字母之间用下划线字符(_)分开,使得更清晰
* 3. 把单词中间有多个空格的调整为1个空格。
* @author 国真
*
*/
public class demo3 {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
String string = scanner.nextLine(); //得到按回车键前的所有字符
Vector<Character> vector = new Vector<Character>(); //new出一个只能存放char类型数据的数组
for(int i=0; i<string.length(); i++){
vector.add(string.charAt(i)); //string.charAt(i),从字符串中提取指定位置的字符
}
int index = 0;
while(index<vector.size()){ //遍历数组
if (index==0 && vector.elementAt(index)>=‘a‘ && vector.elementAt(index)<=‘z‘) { //让首字母大写
//vector.set()用指定的元素替换指定位置上的元素, vector.elementAt()返回指定位置上的元素
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();
}
}
原文:http://blog.51cto.com/13416247/2069635