日期:2014-05-20  浏览次数:20744 次

字符串处理问题
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=伊春药业有限公司;
怎么修改一下求助

------解决方案--------------------
干嘛要split呢?直接上来就取lastIndexOf("\\(")嘛,再用这个数字来取子串得到“(国药准字H10960269 伊春药业有限公司 86903844000178)”,下面就不用说了吧
------解决方案--------------------
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);
------解决方案--------------------
尽量用相对标准不可变的来做切分,可能会更合适,比如是不是考虑用:“(国药准字”来做indexOf。如果不行,我觉得甚至是不是 空格 都能满足你这个需求?

另外这个括号其实很危险,我经常见到中英文混排的括号,甚至还有【[都冒充小括号。
------解决方案--------------------
探讨
引用:
干嘛要split呢?直接上来就取lastIndexOf("\\(")嘛,再用这个数字来取子串得到“(国药准字H10960269 伊春药业有限公司 86903844000178)”,下面就不用说了吧

我还要获取产品名称呀

------解决方案--------------------
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]);