String all="1.氨酚伪麻那敏片(Ⅱ) (国药准字H10960269 伊春药业有限公司 86903844000178)";
//String all="1.氨酚伪麻那敏片 (国药准字H10960269 伊春药业有限公司 86903844000178)";String[] arr=all.split("\\(");
String proname=arr[0].substring(2).trim(); //产品名称
String cname=arr[1].split(" ")[1].trim(); //生产地址
这样子在产品名字没有()这种情况下可以分离。但是出现的时候怎么解决呢?
最终想要的结果是:proname =氨酚伪麻那敏片(Ⅱ)     cname=伊春药业有限公司;
怎么修改一下求助

解决方案 »

  1.   

    干嘛要split呢?直接上来就取lastIndexOf("\\(")嘛,再用这个数字来取子串得到“(国药准字H10960269 伊春药业有限公司 86903844000178)”,下面就不用说了吧
      

  2.   

    String proname, cname;
            String str = "1.氨酚伪麻那敏片(Ⅱ) (国药准字H10960269 伊春药业有限公司 86903844000178)";
            proname = str.substring(str.indexOf(".") + 1, str.lastIndexOf("(")).trim();
            System.out.println("proname: " + proname);
            cname = str.substring(str.lastIndexOf("("));
            cname = cname.substring(cname.indexOf(" "), cname.lastIndexOf(" ")).trim();
            System.out.println("cname: " + cname);
      

  3.   

    尽量用相对标准不可变的来做切分,可能会更合适,比如是不是考虑用:“(国药准字”来做indexOf。如果不行,我觉得甚至是不是 空格 都能满足你这个需求?另外这个括号其实很危险,我经常见到中英文混排的括号,甚至还有【[都冒充小括号。
      

  4.   

    String all="1.氨酚伪麻那敏片(Ⅱ) (国药准字H10960269 伊春药业有限公司 86903844000178)";
    String[] arr=all.split(" ");
    for(int i=0; i<arr.length;i++){
    System.out.println(arr[i]);
    }
    System.out.println(arr.length);
    System.out.println(arr[0].substring(2)+"====="+arr[2]);
      

  5.   

    String[] arr=all.split(" \\(");
    注意,\\前有一个空格