锁定老帖子 主题:一个挺有意思的截取字符串
精华帖 (0) :: 良好帖 (0) :: 新手帖 (5) :: 隐藏帖 (7)
|
|
---|---|
作者 | 正文 |
发表时间:2011-11-02
最后修改:2011-11-02
String str="[Type=UPC-A][Final=10][Nnmber=9]"; Stack st = new Stack(); StringBuilder a = null, b = null, c = null; Map<String,String> map = new HashMap<String, String>(); for (int i = 0; i < str.length(); i++) { switch (str.charAt(i)) { case '[': st.push("["); c = new StringBuilder(); break; case ']': String[]temp = c.toString().split("="); map.put(temp[0].trim(), temp[1].trim()); c = new StringBuilder(); st.pop(); break; default: c.append(str.charAt(i)); } } if(!st.isEmpty()){ System.out.println("字符串有问题"); } System.out.println(map); |
|
返回顶楼 | |
发表时间:2011-11-02
如果考虑性能问题,不建议用正则表达式。
|
|
返回顶楼 | |
发表时间:2011-11-02
String str="[Type=UPC-A][Final=10][Nnmber=9]"; String[] arr = str.split("\\]\\["); for(int i=0;i<arr.length;i++) { String temp = arr[i].split("=")[1]; if(i==arr.length-1) { System.out.println(temp.substring(0,temp.length()-1 )); }else { System.out.println(temp); } } |
|
返回顶楼 | |
发表时间:2011-11-02
Craky003 写道 本来想给代码的,一看到头像,不给了
我想知道你是怎么放上图片的?后面怎么会有个查看附件的? |
|
返回顶楼 | |
发表时间:2011-11-02
正则表达式是解决这类问题最有力的工具吧。不过我觉得最好还是不要hardcode。
String str="[Type=UPC-A][Final=10][Nnmber=9]"; java.util.regex.Pattern pattern = java.util.regex.Pattern.compile("\\[(.*?)=(.*?)\\]"); String[] strArr = str.split("(?<=\\])(?=\\[)"); for(String s : strArr){ java.util.regex.Matcher mt=pattern.matcher(s); if(mt.matches()){ for(int i = 1; i <= mt.groupCount()/2; i++){ System.out.println("Parameter:" + mt.group(i) + "\tValue:" + mt.group(i * 2)); } } } |
|
返回顶楼 | |
发表时间:2011-11-02
zhaoshunxin 写道 StringTokenizer s = new StringTokenizer(
"[Type=UPC-A][Final=10][Nnmber=9]", "[=]"); while (s.hasMoreElements()) { System.out.println(s.nextElement()); } 第二个 第四个 第六个 就是了 很巧妙. |
|
返回顶楼 | |
发表时间:2011-11-02
——————————————————————————————弱爆了
|
|
返回顶楼 | |
发表时间:2011-11-02
StringTokenizer 是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用 String 的 split 方法或 java.util.regex 包。
|
|
返回顶楼 | |
发表时间:2011-11-02
zhaoshunxin 写道 StringTokenizer s = new StringTokenizer(
"[Type=UPC-A][Final=10][Nnmber=9]", "[=]"); while (s.hasMoreElements()) { System.out.println(s.nextElement()); } 第二个 第四个 第六个 就是了 顶!!!!估计就这段代码牛叉了!! Dom4j源码获取xml的编码就是这样做的! |
|
返回顶楼 | |
发表时间:2011-11-02
wowo12345 写道 zhaoshunxin 写道 StringTokenizer s = new StringTokenizer(
"[Type=UPC-A][Final=10][Nnmber=9]", "[=]"); while (s.hasMoreElements()) { System.out.println(s.nextElement()); } 第二个 第四个 第六个 就是了 顶!!!!估计就这段代码牛叉了!! Dom4j源码获取xml的编码就是这样做的! 这样效率很高吗? |
|
返回顶楼 | |