1 package com.liveyc.framework.util; 2 3 import java.io.UnsupportedEncodingException; 4 import java.net.URLDecoder; 5 import java.text.DecimalFormat; 6 import java.util.ArrayList; 7 import java.util.HashMap; 8 import java.util.Iterator; 9 import java.util.List; 10 import java.util.Map; 11 import java.util.StringTokenizer; 12 13 import org.apache.commons.collections.CollectionUtils; 14 15 16 /** 17 * @author aitf 18 * @version 创建时间:2016年12月15日 下午2:38:30 19 * 类说明 20 */ 21 public class StringUtil { 22 23 /** 24 * <li>判断字符串是否为空值</li> 25 * <li>NULL、空格均认为空值</li>. 26 * 27 * @param value 28 * the value 29 * 30 * @return true, if checks if is empty 31 */ 32 public static boolean isEmpty(String value) { 33 return null == value || "".equals(value.trim()); 34 } 35 36 37 /** 38 * 去除,分隔符,用于金额数值去格式化. 39 * 40 * @param value 41 * the value 42 * 43 * @return the string 44 */ 45 public static String decimal(String value) { 46 if (null == value || "".equals(value.trim())) { 47 return "0"; 48 } else { 49 return value.replaceAll(",", ""); 50 } 51 } 52 53 /** 54 * 在数组中查找字符串. 55 * 56 * @param params 57 * the params 58 * @param name 59 * the name 60 * @param ignoreCase 61 * the ignore case 62 * 63 * @return the int 64 */ 65 public static int indexOf(String[] params, String name, boolean ignoreCase) { 66 if (params == null) 67 return -1; 68 for (int i = 0, j = params.length; i < j; i++) { 69 if (ignoreCase && params[i].equalsIgnoreCase(name)) { 70 return i; 71 } else if (params[i].equals(name)) { 72 return i; 73 } 74 } 75 return -1; 76 } 77 78 /** 79 * 查询Str2在Str1中出现几次 80 * 81 * @param str1 82 * @param str2 83 * @return 84 */ 85 public static int indexAllOf(String str1, String str2) { 86 int he = 0; 87 for (int i = 0; i < str1.length(); i++) { 88 int t = str1.indexOf(str2, i); 89 if (i == t) { 90 he++; 91 } 92 } 93 return he; 94 } 95 96 /** 97 * 将字符转数组. 98 * 99 * @param str 100 * the str 101 * 102 * @return the string[] 103 */ 104 public static String[] toArr(String str) { 105 String inStr = str; 106 String a[] = null; 107 try { 108 if (null != inStr) { 109 StringTokenizer st = new StringTokenizer(inStr, ","); 110 if (st.countTokens() > 0) { 111 a = new String[st.countTokens()]; 112 int i = 0; 113 while (st.hasMoreTokens()) { 114 a[i++] = st.nextToken(); 115 } 116 } 117 } 118 } catch (Exception e) { 119 e.printStackTrace(); 120 } 121 return a; 122 } 123 124 /** 125 * 将字符转数组. 126 * 127 * @param str 128 * the str 129 * @param splitChar 130 * the split char 131 * 132 * @return the string[] 133 */ 134 public static String[] toArr(String str, String splitChar) { 135 String inStr = str; 136 String a[] = null; 137 try { 138 if (null != inStr) { 139 StringTokenizer st = new StringTokenizer(inStr, splitChar); 140 if (st.countTokens() > 0) { 141 a = new String[st.countTokens()]; 142 int i = 0; 143 while (st.hasMoreTokens()) { 144 a[i++] = st.nextToken(); 145 } 146 } 147 } 148 } catch (Exception e) { 149 e.printStackTrace(); 150 } 151 return a; 152 } 153 154 /** 155 * 字符串数组包装成字符串. 156 * 157 * @param ary 158 * the ary 159 * @param s 160 * 包装符号如 ‘ 或 " 161 * 162 * @return the string 163 */ 164 public static String toStr(String[] ary, String s) { 165 if (ary == null || ary.length < 1) 166 return ""; 167 StringBuffer bf = new StringBuffer(); 168 bf.append(s); 169 bf.append(ary[0]); 170 for (int i = 1; i < ary.length; i++) { 171 bf.append(s).append(",").append(s); 172 bf.append(ary[i]); 173 } 174 bf.append(s); 175 return bf.toString(); 176 } 177 178 /** 179 * 得到字符的编码格式 180 * 181 * @param str 182 * @return 183 */ 184 public static String getEncoding(String str) { 185 String encode = "GB2312"; 186 try { 187 if (str.equals(new String(str.getBytes(encode), encode))) { 188 String s = encode; 189 return s; 190 } 191 } catch (Exception exception) { 192 } 193 encode = "ISO-8859-1"; 194 try { 195 if (str.equals(new String(str.getBytes(encode), encode))) { 196 String s1 = encode; 197 return s1; 198 } 199 } catch (Exception exception1) { 200 } 201 encode = "UTF-8"; 202 try { 203 if (str.equals(new String(str.getBytes(encode), encode))) { 204 String s2 = encode; 205 return s2; 206 } 207 } catch (Exception exception2) { 208 } 209 encode = "GBK"; 210 try { 211 if (str.equals(new String(str.getBytes(encode), encode))) { 212 String s3 = encode; 213 return s3; 214 } 215 } catch (Exception exception3) { 216 } 217 return ""; 218 } 219 220 221 /** 222 * utf8转码 Description :. 223 * 224 * @param str 225 * the str 226 * 227 * @return the string 228 */ 229 public static String utf8Decoder(String str) { 230 try { 231 if (str != null) { 232 return URLDecoder.decode(str, "UTF-8"); 233 } 234 } catch (UnsupportedEncodingException e) { 235 e.printStackTrace(); 236 } 237 return str; 238 } 239 240 241 public static String changeCharset(String str, String oldCharset, String newCharset) 242 throws UnsupportedEncodingException { 243 if (str != null) { 244 // 用旧的字符编码解码字符串。解码可能会出现异常。 245 byte[] bs = str.getBytes(oldCharset); 246 // 用新的字符编码生成字符串 247 return new String(bs, newCharset); 248 } 249 return null; 250 } 251 252 253 /** 254 * 过滤掉高亮的html 255 * @param str 256 * @return 257 */ 258 public static String htmlFilter(String str) { 259 if (isEmpty(str)) { 260 return str; 261 } 262 str = str.replace("<font color=‘red‘>", ""); 263 str = str.replace("<font color=‘blue‘>", ""); 264 str = str.replace("</font>", ""); 265 266 return str; 267 } 268 269 public static String trimString(String str){ 270 if(isEmpty(str)){ 271 return str; 272 } 273 return str.trim(); 274 } 275 276 277 public static String encodeToUtf(String str) throws Exception { 278 if(isEmpty(str)){ 279 return str; 280 } 281 return new String(str.getBytes("iso-8859-1"), "UTF-8"); 282 } 283 284 /** 285 * 根据身份证号转性别 286 * @param sfzh 287 * @return 288 */ 289 public static String converToSex(String sfzh){ 290 int sex = 0; 291 if(StringUtil.isEmpty(sfzh)){ 292 return ""; 293 }else{ 294 if(sfzh.length()==15){ 295 sex = Integer.parseInt(sfzh.substring(13,14)); 296 }else if(sfzh.length()==18){ 297 sex = Integer.parseInt(sfzh.substring(16,17)); 298 } 299 if(sex%2 == 0){ 300 return "女"; 301 }else{ 302 return "男"; 303 } 304 } 305 } 306 307 /** 308 * 设置地址的Map,并去重 309 * @param addrMap 310 * @param fromType 311 * @param addrs 312 */ 313 public static void setAddr2Map(Map addrMap,String addrs,String fromType){ 314 String[] addrls = null ; 315 if(addrMap==null){ 316 addrMap = new HashMap(); 317 } 318 if(addrMap.containsKey(fromType)){ 319 String strAddr = (String)addrMap.get(fromType); 320 if(strAddr!=null && strAddr.trim().length()>0){ 321 addrls = strAddr.split(","); 322 } 323 324 if(!isExsit(addrls,addrs)){ 325 strAddr +=","+addrs; 326 addrMap.put(fromType, strAddr); 327 } 328 }else{ 329 addrMap.put(fromType, addrs); 330 } 331 } 332 333 334 /** 335 * 字符口串是否在数据组存在 336 * @param addrls 337 * @param addrs 338 * @return 339 */ 340 private static boolean isExsit(String[] addrls,String addrs){ 341 if(addrls!=null && addrls.length>0){ 342 for(int i=0;i<addrls.length;i++){ 343 if(addrls[i].equals(addrs)){ 344 return true; 345 } 346 } 347 } 348 return false; 349 } 350 /** 351 * 把Map转换成String 352 * @param addrMap 353 * @return 354 */ 355 public static String convMap2String(Map addrMap){ 356 StringBuilder tempBuf =new StringBuilder(); 357 Iterator<Map.Entry> it = addrMap.entrySet().iterator(); 358 while (it.hasNext()) { 359 Map.Entry<String, String> entry = it.next(); 360 String fldName = entry.getKey(); 361 String fldValue = entry.getValue(); 362 tempBuf.append(fldValue).append("(").append(fldName).append(");"); 363 } 364 return tempBuf.toString(); 365 } 366 367 //字节转换 368 public static String formetFileSize(long fileS) { 369 370 DecimalFormat df = new DecimalFormat("#.00"); 371 String fileSizeString = ""; 372 if (fileS < 1024) { 373 fileSizeString = df.format((long) fileS) + "B"; 374 } else if (fileS < 1048576) { 375 fileSizeString = df.format((long) fileS / 1024) + "KB"; 376 } else if (fileS < 1073741824) { 377 fileSizeString = df.format((long) fileS / 1048576) + "MB"; 378 } else if(fileS < 1099511627776l) { 379 fileSizeString = df.format((long) fileS / 1073741824) + "GB"; 380 } else{ 381 fileSizeString = df.format((long) fileS / 1099511627776l) + "TB"; 382 } 383 return fileSizeString; 384 } 385 386 public static void main(String[] args) { 387 388 long a = 1948065583104l; 389 System.out.println(formetFileSize(a)); 390 } 391 392 }