/** * Copyright (c)2010-2011 Enterprise Website Content Management System(EWCMS), All rights reserved. * EWCMS PROPRIETARY/CONFIDENTIAL. Use is subject to license terms. * http://www.ewcms.com */ package com.ewcms.plugin.report.generate.util; import java.util.Map; import java.util.SortedMap; import java.util.TreeMap; import java.util.regex.Matcher; import java.util.regex.Pattern; /** * 解析ListView对象中的value值,并进行排序。 * <ul> * value值可以有几种写法: * <li>key=value,key=value,...... * <li>key=value,1900-2008,key=value,...... * <li>1900-2008,2009-2100,...... * </ul> * * @author 吴智俊 */ public class AnalysisUtil { public static Map<String, String> analysis(String value) { SortedMap<String, String> map = new TreeMap<String, String>(); try { String[] array = value.split(","); for (String arrayValue : array) { if (arrayValue.indexOf("-") > 0) { String[] range = arrayValue.split("-"); String begin = range[0]; String end = range[1]; if (isNumber(begin) && isNumber(end)) { Integer beginInt = Integer.parseInt(begin); Integer endInt = Integer.parseInt(end); if (beginInt <= endInt) { for (int i = beginInt; i <= endInt; i++) { map.put(String.valueOf(i), String.valueOf(i)); } } } } else if (arrayValue.indexOf("=") > 0) { String[] range = arrayValue.split("="); String k = range[0]; String v = range[1]; map.put(k, v); } } } catch (Exception e) { } return map; } //字符串是否数值 private static Boolean isNumber(String s) { Pattern pa = Pattern.compile("[0-9]*"); Matcher ma = pa.matcher(s); if (ma.matches()) { return true; } return false; } }