由数字和非数字组成的字符串,将连续的数字提取出来
要求:如果连续的数字长度大于4,则将此串数字断开,输出整型数组
例:udgy87539HYFnj9873465BF
输出:8753  9  9873  465

解决方案 »

  1.   


    public static Integer[] getIntegers(String str) {
    final Pattern p = Pattern.compile("\\d{1,4}");
    Matcher matcher = p.matcher(str);
    ArrayList<Integer> list = new ArrayList<Integer>();
    while (matcher.find()) {
    list.add(Integer.valueOf(matcher.group()));
    }
    return list.toArray(new Integer[list.size()]);
    }
      

  2.   

        public static void main(String[] args) throws Exception {
    String str = "udgy87539HYFnj9873465BF";
    String[] arr = str.split("[^\\d+]");
    for (String s : arr) {
    if (s.length() < 1)  continue;
    for (int i = 0; i < s.length(); i += 4) {
    System.out.print (s.substring(i, i+4 > s.length() ? s.length() : i+4) + " ");
    }
    }
        }
      

  3.   


    public static Integer [] getIntArray (String str) {
    if (str == null || str.length() <= 0)
    return null;
    char [] chs = str.toCharArray();
    int len = chs.length;
    StringBuffer str_num = new StringBuffer();
    ArrayList<Integer> numbers = new ArrayList<Integer>();
    for (int i = 0; i < len; i++) {

    if (Character.isDigit(chs[i])) {
    str_num.append(chs[i]);
    }

    if (i < len-2 && (!Character.isDigit(chs[i+1]) || str_num.length() == 4)) {
    if (str_num.length() > 0) {
    numbers.add(Integer.parseInt(str_num.toString()));
    System.out.println(str_num);
    str_num = new StringBuffer();
    }

    }
    }
    Integer [] s = new Integer [numbers.size()];
    numbers.toArray(s);
    return s;
    }
      

  4.   

    import java.util.ArrayList;
    public class TestEnd {
    public static void main(String[] args) {
    String s2="udgy87539HYFnj9873465BF";
    String[] result2=s2.split("\\D");//按非数字拆分字符串
    ArrayList<String> arr=new ArrayList<String>();// 存放截好的字符串
    for(int i=0;i<result2.length;i++){
    if(result2[i].length()>=4)//截断长度大于4
    for(int j=0;j<result2[i].length();j+=4){
    if(j+4>result2[i].length())//截到串尾且不够4个时
    arr.add(result2[i].substring(j,result2[i].length()));
    else arr.add(result2[i].substring(j,j+4));
    }
    else arr.add(result2[i]);
    }
    for(String temp:arr){//输出
    System.out.println(temp);
    }
    }
    }
      

  5.   

    不好意思啊,你能不能将这个程序写具体一点,我们刚开始学java,还没学到pattern类呢
      

  6.   


    学校一般不会教 Pattern 类的。public class Test4 {
            
        public static void main(String[] args) {
            String str = "udgy87539HYFnj9873465BF";
            String[] strs = str.split("\\D+|(?<=\\G\\d{4})");
            System.out.println(Arrays.toString(strs));
        }
    }