日期:2014-05-20 浏览次数:20934 次
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
public class test {
public static void main(String args[]) {
Scanner sc = new Scanner(System.in);
String str = sc.nextLine();
char[] chars =str.toCharArray();
List<Character> clist = new ArrayList<Character>();
String flagStr ="space";//space,字母litter,数字number
for (Character c : chars){
if (c==' ') {
if(!flagStr.equals("space")){
clist.add(c);
}
flagStr="space";
}
else if (c.toString().matches("[0-9]")){
if(flagStr.equals("litter")){
clist.add('_');
}
else if(flagStr.equals("space")){
//判断空格前面是不是字母,如果是把空格换成下划线
if(clist.size()>=2&&clist.get(clist.size()-2).toString().matches("[a-zA-Z]")){
clist.remove(clist.size()-1);
clist.add('_');
}
}
clist.add(c);
flagStr="number";
} else if(c.toString().matches("[a-zA-Z]")){
if(flagStr.equals("space")){
c = Character.toUpperCase(c);
}
else if(flagStr.equals("number")){
clist.add('_');
}
clist.add(c);
flagStr="litter";
}
}
for(Iterator<Character> it=clist.iterator();it.hasNext();){
System.out.print(it.next().toString());
}
}
}
dasfwe waeopirwe 7a6ef87ae8 sad56f4we we5sa4fsa
Dasfwe Waeopirwe_7_a_6_ef_87_ae_8 Sad_56_f_4_we We_5_sa_4_fsa
------解决方案--------------------
传说中的正则表达式
------解决方案--------------------
没事啊,你把正则表达式换成字符比较就可以的。。。楼主我相信你有这个能力修改好。。。
------解决方案--------------------
我只是把字符转换成字符串在用正则,方便一点。
你只要把.toString().matches("[a-zA-Z]")这些换成字符比较就ok了
------解决方案--------------------
先split(" ")
之后先把第一个字母变大写 再用正则表达式匹配