在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
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
这程序该怎样编写程序啊!
------解决方案--------------------
输入字符串split之后,处理前面的字符, 最后一段字段用正则按数字切。
------解决方案--------------------
我感觉应该使用charAt对字符进行分析
------解决方案--------------------
------解决方案--------------------
- Java code
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 we5sa4fsaDasfwe 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(" ")
之后先把第一个字母变大写 再用正则表达式匹配