日期:2014-05-20 浏览次数:20751 次
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(" ")
之后先把第一个字母变大写 再用正则表达式匹配