当前位置: 代码迷 >> J2SE >> java中常用类String类有关问题
  详细解决方案

java中常用类String类有关问题

热度:331   发布时间:2016-04-24 01:27:12.0
java中常用类String类问题
在实际的开发工作中,对字符串的处理是最常见的编程任务。本题目即是要求程序对用户输入的串进行处理。具体规则如下:
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对字符进行分析
------解决方案--------------------
探讨
我感觉应该使用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(" ") 
之后先把第一个字母变大写 再用正则表达式匹配
  相关解决方案