现在有一个字符串“中国china2009"我想把它拆成三个字符串,中国,china,2009用正则表达式如何去写呢?

解决方案 »

  1.   

    public class Test{

    public static void main(String[] args){
    String a = "中国china2009";
    String[] strs = a.split("");
    String hanzi = "";
    String zimu = "";
    String shuzi = "";
    for(int i = 0;i<strs.length;i++){
    int c = strs[i].hashCode();
    if((c>=97 && c<=122)||(c>=65 && c<=90)){
    zimu = zimu+strs[i];
    }else if(c>=48&&c<=57){
    shuzi = shuzi + strs[i];
    }else{
    hanzi = hanzi + strs[i];
    } }
    System.out.println(hanzi);
    System.out.println(zimu);
    System.out.println(shuzi);
    } }
    [/code]
      

  2.   

    循环数组~~判断hashCode~~public class Test{

    public static void main(String[] args){
    String a = "中国china2009";
    String[] strs = a.split("");
    String hanzi = "";
    String zimu = "";
    String shuzi = "";
    for(int i = 0;i<strs.length;i++){
    int c = strs[i].hashCode();
    if((c>=97 && c<=122)||(c>=65 && c<=90)){
    zimu = zimu+strs[i];
    }else if(c>=48&&c<=57){
    shuzi = shuzi + strs[i];
    }else{
    hanzi = hanzi + strs[i];
    } }
    System.out.println(hanzi);
    System.out.println(zimu);
    System.out.println(shuzi);
    } }
      

  3.   

    <script>
    var strNum = "中国china2009".match(/([0-9]+)/g)
    alert(strNum );
    var strChar = "中国china2009".match(/([a-zA-Z]+)/g)
    alert(strChar );
    var strHanzi = "中国china2009".match(/([^0-9a-zA-Z]+)/g)
    alert(strHanzi );
    </script>
      

  4.   

    <script>
    var strNum = "中国china2009".match(/([0-9]+)/g)
    alert(strNum );
    var strChar = "中国china2009".match(/([a-zA-Z]+)/g)
    alert(strChar );
    var strHanzi = "中国china2009".match(/([^0-9a-zA-Z]+)/g)
    alert(strHanzi );
    </script>
      

  5.   

    不好意思,以上用的是javascript语法,不过道理是一样的。
      

  6.   

    匹配汉字:[^x00-xff]
    匹配英文[a-zA-Z] or \m
    匹配数字[0-9] or \d
      

  7.   

    public class Test4 {    public static void main(String[] args) {
            String str = "中国china2009";
            String[] strs = str.split("(?<!^)(?:(?<![a-zA-Z])(?=[a-zA-Z])|(?<![0-9])(?=[0-9])|(?<![\u4e00-\u9faf])(?=[\u4e00-\u9faf]))");
            for(int i = 0; i < strs.length; i++) {
                System.out.println(strs[i]);
            }
        }
    }
      

  8.   

    1.用ASCII编码判断。
    2.用正则表达式匹配。
      

  9.   

    JAVA新手,8楼的代码不太懂。。郁闷
      

  10.   

    import java.util.regex.*;
    public class MyRegex2 {
    public static void main(String[] args) {
    String s="中国china2009";
    /*
     * 匹配中文字符的正则表达式: [\u4e00-\u9fa5]
     * [a-zA-Z]*:表示英文字母有0个或多个
     * \\d*:表示数字有0个或多个
     */
    Matcher m=Pattern.compile("([\u4e00-\u9fa5]*)([a-zA-Z]*)(\\d*)").matcher(s);
    if(m.find()){
    //第一对小括号表示第一组,第二对小括号表示第二组...
    System.out.println(m.group(1));
    System.out.println(m.group(2));
    System.out.println(m.group(3));
    }
    }
    }