论坛首页 Java企业应用论坛

一个挺有意思的截取字符串

浏览 16731 次
精华帖 (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);
0 请登录后投票
   发表时间:2011-11-02  
如果考虑性能问题,不建议用正则表达式。
0 请登录后投票
   发表时间: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);
			}
		}
0 请登录后投票
   发表时间:2011-11-02  
Craky003 写道
本来想给代码的,一看到头像,不给了



我想知道你是怎么放上图片的?后面怎么会有个查看附件的?
0 请登录后投票
   发表时间: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));
				}
			}  
		}

0 请登录后投票
   发表时间:2011-11-02  
zhaoshunxin 写道
StringTokenizer s = new StringTokenizer(
"[Type=UPC-A][Final=10][Nnmber=9]", "[=]");
while (s.hasMoreElements()) {
System.out.println(s.nextElement());
}
第二个 第四个 第六个 就是了

很巧妙.
0 请登录后投票
   发表时间:2011-11-02  
——————————————————————————————弱爆了
0 请登录后投票
   发表时间:2011-11-02  
StringTokenizer 是出于兼容性的原因而被保留的遗留类(虽然在新代码中并不鼓励使用它)。建议所有寻求此功能的人使用 String 的 split 方法或 java.util.regex 包。
0 请登录后投票
   发表时间: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的编码就是这样做的!
0 请登录后投票
   发表时间: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的编码就是这样做的!

这样效率很高吗?
0 请登录后投票
论坛首页 Java企业应用版

跳转论坛:
Global site tag (gtag.js) - Google Analytics