虽然楼主没有给分,但是我还是愿意伸手帮助一、程序
public  class  TestStr
{
public static void main(String[] args) 
{
System.out.println("Hello World!");
String st = "asdfsdfdsfsdfdf9s1d2f,3a4发,有?饭dfgfdgdfgs5.@@#$%^&*()ddfgdfg6,f7如过11大厦10,看来s,7ad8:f8"; 
String[] ys  = st.split("\\D"); 
System.out.println("st.len="+st.length());
int len = 0;
for(int k = 0;k <ys.length;k++){ 
//System.out.print(ys[k]); 
if(!"".equals(ys[k])){
len++;
System.out.print("|"+ys[k]+"|"); 
}else
System.out.print("--"+ys[k]); 
//System.out.println("k="+k);
}
                        //获取拆分出的数组长度,再写个循环将不为“”的数组放入ret实现将数着放入int数着要求,纠正点的是拆分出来的是13个数字
                           //因为 split("\\D")以非数着为拆分标识,所以 11,10 不能拆分为 1,1,1,0数组,具体情况可以参见输出日子
int[] ret = new int[len];

System.out.println("len="+len);
System.out.println("ys.len="+ys.length); 
System.out.println("str.len - ys.len="+(st.length()-ys.length)); 
    } 
}
二、输出日子E:\test>java TestStr
Hello World!
st.len=83
------------------------------|9||1||2|--|3||4|----------------------------|5|--
--------------------------------|6|--|7|--|11|--|10|--------|7|--|8|--|8|len=13
ys.len=69
str.len - ys.len=14三、由于字符串里有中文字符,所以不能简单相加减