String str1 = "404071|404013|404072";
String str2 = "405|406|407";
String str3 = "22|33|44";
上面字符串都是以“|”分隔,要求:分析str1字符串,如果碰到里面存在404013的时候,则把对应的406,33取出来
取出来放在一个string里面去

解决方案 »

  1.   


    public static void main(String args[]){
    String retStr = "";
    String str1 = "404071|404013|404072";
    String str2 = "405|406|407";
    String str3 = "22|33|44";
            String[] arr1 = str1.split("\\|");
            if(arr1[1].equals("404013")){
             retStr = str2.split("\\|")[1]+","+str3.split("\\|")[1];
            }
            System.out.println(retStr);
    }
      

  2.   

    上面的str1只是个举例,不一定就是第二个位置就是404013,可能是第i个位置
      

  3.   

    补充,而且不能用spilt方法,因为系统是jdk1.3的 不允许改环境的
      

  4.   

    转换成char的数组,定义分隔符,每个字符比对,遇到分隔符重置比对的串,知道比对完成。
    或者用正则表达式 Match 去分割字串,然后比对 一样。
      

  5.   

    不能split那么你可以用StringTokenizer
      

  6.   

    for example
    String str1 = "404071|404013|404072";
    String str2 = "405|406|407";
    String str3 = "22|33|44";
    String[] strv1 = str1.split("\\|");
    String[] strv2 = str2.split("\\|");
    String[] strv3 = str3.split("\\|");
    for (int i=0; i<strv1.length; i++) {
        if ("404013".equals(strv1[i])) {
            return strv2[i]+strv3[i];
        }
    }
      

  7.   

    如果那样要自定义split函数,函数定义完成后就好处理了
        /**
         * 自定义字符串分割函数,返回数组 -- by PanJun
         * 
         * @param s
         *            待分解串
         * @param token
         *            分解标识
         * @return
         */
        public static String[] split(String s, String token) {
            if (s == null)
                return null;
            if (token == null || s.length() == 0)
                return new String[] { s };        int size = 0;
            String[] result = new String[4];
            while (s.length() > 0) {
                int index = s.indexOf(token);
                String splitOne = s;
                if (index > -1) {
                    splitOne = s.substring(0, index);
                    s = s.substring(index + token.length());
                } else {
                    s = "";
                }            if (size >= result.length) {
                    String[] tmp = new String[result.length * 2];
                    System.arraycopy(result, 0, tmp, 0, result.length);
                    result = tmp;
                }            if (splitOne.length() > 0) {
                    result[size++] = splitOne;
                }
            }        String[] tmp = result;
            result = new String[size];
            System.arraycopy(tmp, 0, result, 0, size);
            return result;
        }    public static void main(String args[]) {
            String str1 = "404071|404013|404072";
            String str2 = "405|406|407";
            String str3 = "22|33|44";
            String[] arr1 = str1.split("\\|");
            String[] arr2 = str2.split("\\|");
            String[] arr3 = str3.split("\\|");        String str2Part = null;
            String str3Part = null;
            for (int i = 0; i < arr1.length; i++) {
                if (arr1[i].equals("404013")) {
                    if (arr2.length > i)
                        str2Part = arr2[i];                if (arr3.length > i)
                        str3Part = arr3[i];
                }
            }
            
            System.out.println(str2Part + ", " + str3Part);
        }
      

  8.   

    不能split自己写个split方法,或者使用StringTokenizer
    String[] split(String src, String reg) {
        List l = new ArrayList();
        if (src.indexOf(reg)==0) {
            l.add("");
            src=src.substring(1);
        }
        while ((int idx = src.indexOf(reg))>-1) {
            l.add(src.substring(0,idx-1));
            src = src.substring(idx+1);
        }
        l.add(src);
        String[] r = new String[l.size()];
        for (int i=0; i<l.size(); i++) {
            r[i] = (String)l.get(i);
        }
        return r;
    }
      

  9.   


    import java.util.StringTokenizer;
    public class Main {
    public static void main(String[] args) {
    String str1 = "404071|404013|404072";
    String str2 = "405|406|407";
    String str3 = "22|33|44";

    String[] s1 = split(str1);
    String[] s2 = split(str2);
    String[] s3 = split(str3);
    int i = -1;
    for(i=0; i<s1.length; i++) {
    if(s1[i].equals("404013")) {
    break;
    }
    }
    System.out.println(s1[i]);
    System.out.println(s2[i]);
    System.out.println(s3[i]);
    }

    //以“|”分割字符串,返回分割后的字符串数组
    private static String[] split(String str) {
    StringTokenizer st = new StringTokenizer(str, "|");
    String[] temp = new String[str.indexOf("|") + 1];
    int index = 0;
    while(st.hasMoreElements()) {
    temp[index ++] = st.nextToken();
    }
    return temp;
    }
    }
      

  10.   

    搞错点:    /**
         * 自定义字符串分割函数,返回数组 -- by PanJun
         * 
         * @param s
         *            待分解串
         * @param token
         *            分解标识
         * @return
         */
        public static String[] split(String s, String token) {
            if (s == null)
                return null;
            if (token == null || s.length() == 0)
                return new String[] { s };        int size = 0;
            String[] result = new String[4];
            while (s.length() > 0) {
                int index = s.indexOf(token);
                String splitOne = s;
                if (index > -1) {
                    splitOne = s.substring(0, index);
                    s = s.substring(index + token.length());
                } else {
                    s = "";
                }            if (size >= result.length) {
                    String[] tmp = new String[result.length * 2];
                    System.arraycopy(result, 0, tmp, 0, result.length);
                    result = tmp;
                }            if (splitOne.length() > 0) {
                    result[size++] = splitOne;
                }
            }        String[] tmp = result;
            result = new String[size];
            System.arraycopy(tmp, 0, result, 0, size);
            return result;
        }    public static void main(String args[]) {
            String str1 = "404071|404013|404072";
            String str2 = "405|406|407";
            String str3 = "22|33|44";
            String[] arr1 = split(str1, "|");// modified
            String[] arr2 = split(str2, "|");// modified
            String[] arr3 = split(str3, "|");// modified        String str2Part = null;
            String str3Part = null;
            for (int i = 0; i < arr1.length; i++) {
                if (arr1[i].equals("404013")) {
                    if (arr2.length > i)
                        str2Part = arr2[i];                if (arr3.length > i)
                        str3Part = arr3[i];
                }
            }        System.out.println(str2Part + ", " + str3Part);
        }
      

  11.   


    public class Test {
        public static void main(String[] args) {
            String str1 = "404071|404013|404072";
            String str2 = "405|406|407";
            String str3 = "22|33|44";        String[] s1 = split(str1, "|");
            String[] s2 = split(str2, "|");
            String[] s3 = split(str3, "|");
            for (int i = 0; i < s1.length; i++) {
                if (s1[i].equals("404013")) {
                    System.out.println(s1[i]);
                    System.out.println(s2[i]);
                    System.out.println(s3[i]);
                    break;
                }
            }    }    private static String[] split(String str, String delim) {
            StringTokenizer st = new StringTokenizer(str, delim);
            String[] temp = new String[st.countTokens()];
            int index = 0;
            while (st.hasMoreTokens()) {
                temp[index++] = st.nextToken();
            }
            return temp;
        }
    }把11楼的代码改了下
      

  12.   

    练习一下,感觉有点麻烦。 public static void main(String args[]){

    String str1 = "404071|404013|404072";
    String str2 = "405|406|407";
    String str3 = "22|33|44";

    String [] myStr1 = split(str1,"|");
    String [] myStr2 = split(str2,"|");
    String [] myStr3 = split(str3,"|");

    StringBuilder sb = new StringBuilder();

    for(int i=0;i<myStr1.length;i++){

    if(myStr1[i].equals("404013")){

    sb.append(myStr2[i]).append(myStr3[i]);
    break;
    }
    }

    System.out.println(sb.toString());


    }
    public static String [] split(String str,String reg){

    if(str==null){
    return  null;
    }
    if(reg==null){
    return new String []{str};
    }

    List<Integer> list = new ArrayList<Integer>();
    char [] myChar = str.toCharArray();

    for(int i =0 ; i < str.length();i++){
    if(reg.equalsIgnoreCase(Character.toString(myChar[i]))){
    list.add(i);
    }
    }

    String [] myStr = new String[list.size()+1];
    for(int i=0;i<=list.size();i++){
    if(i==0){
    myStr[i]=str.substring(0, list.get(i));
    }else if(i==list.size()){
    int m = list.get(i-1);
    myStr[i]=str.substring(m+1,str.length());
    }else{
    myStr[i]=str.substring(list.get(i-1)+1, list.get(i));
    }
    }

    return myStr; }