字符串中存储这样的东西
BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; BACKGROUND: #ffffff; HEIGHT: 100%
有办法把这里面” : “冒号后面和” ; ”分号中间的字符串去出来吗。
也就是一个字符串中从开头到结束取出冒号和分号之间的所有值存储进另一个字符串数组中

解决方案 »

  1.   

    String src = "BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; BACKGROUND: #ffffff;HEIGHT: 100%";
    String[] groups = src.split(";");
    Map map = new HashMap();
    for(String group : groups){//jdk5.0语法
      String[] pair = group.split(":");
      map.put(pair[0],pair[1]);
    }
    现在map里边有你所有想要的东西。
      

  2.   

    正则:
    java.util.regex.Pattern p=java.util.regex.Pattern.compile(":[^:;]*;");
    java.util.regex.Matcher m=p.matcher(src);
    while(m.find())
    {
      System.out.println(m.group());
    }
      

  3.   


       String a[][]=new String[3][3];
       String str="BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; BACKGROUND: #ffffff; HEIGHT: 100%";
       out.println(str+"<br>");
       StringTokenizer st=new StringTokenizer(str,";");
       int i=0,j=0;
       while(st.hasMoreTokens()) {
           StringTokenizer temp=new StringTokenizer(st.nextToken(),":");
           while(temp.hasMoreTokens()) {
               a[i][j]=temp.nextToken();
               out.println("a["+i+"]["+j+"]=" +a[i][j]+ "<br>");
               j++;
           }
           i++;
           j=0;
       };
      

  4.   

    上面贴错了,完整的如下:   String s[][]=new String[4][2];
       String sssSTR="BORDER-RIGHT: #999999 1px solid; BORDER-TOP: #999999 1px solid; BACKGROUND: #ffffff; HEIGHT: 100%";
       out.println(sssSTR+"<br>");
       StringTokenizer sss = new StringTokenizer(sssSTR,";");
       int x=0,y=0;
       while(sss.hasMoreTokens()) {
           StringTokenizer ssstemp=new StringTokenizer(sss.nextToken(),":");
           while(ssstemp.hasMoreTokens()){
               s[x][y]=ssstemp.nextToken();
               out.println("s["+x+"]["+y+"]=" +s[x][y]+ "<br>");
               y++;
           };
           x++;
           y=0;
       };
      

  5.   

    iwlk(C06.NET) 对的 
    -------------------------
    正则:
    java.util.regex.Pattern p=java.util.regex.Pattern.compile(":[^:;]*;");
    java.util.regex.Matcher m=p.matcher(src);
    while(m.find())
    {
      System.out.println(m.group());
    }
    用":[^:;]*;"这个正则式就可以取出
    : #999999 1px solid;
    : #999999 1px solid;
    : #ffffff;
    但是注意我只想要冒号和分号内的东西。还有办法写个正则式把冒号和分号中如果有三个的也分开取出来吗?也就是第一行#999999   1px   solid三个分开
      

  6.   

    MYLiao(醉夕阳)也是可以啊,但那个方法似乎不是很好,不适合很多数据,用正则式就可以用方法调用拉
      

  7.   

    对的,用StringTokenizer.个人只是觉得用这个的一次只能对一种分隔符有用。
      

  8.   

    正则:
    java.util.regex.Pattern p=java.util.regex.Pattern.compile(":[^:;]*;");
    java.util.regex.Matcher m=p.matcher(src);
    while(m.find())
    {
      System.out.println(m.group());
    }
    可惜这个正则式带有冒号和分号在里面的,我想只要分号和冒号之间的
    :[^:;]*;