操作字符串的工具类
1 import java.io.ByteArrayOutputStream; 2 import java.io.IOException; 3 import java.io.PrintStream; 4 import java.math.BigDecimal; 5 import java.util.regex.Matcher; 6 import java.util.regex.Pattern; 7 8 public class StringUtil { 9 10 /** 11 * 过滤空NULL 12 * @param o 13 * @return 14 */ 15 public static String FilterNull(Object o) { 16 return o != null && !"null".equals(o.toString()) ? o.toString().trim() : "" ; 17 } 18 19 /** 20 * 是否为空 21 * @param o 22 * @return 23 */ 24 public static boolean isEmpty(Object o) { 25 if (o == null) { 26 return true; 27 } 28 if ("".equals(FilterNull(o.toString()))) { 29 return true; 30 } else { 31 return false; 32 } 33 } 34 35 /** 36 * 是否不为空 37 * @param o 38 * @return 39 */ 40 public static boolean isNotEmpty(Object o) { 41 if (o == null) { 42 return false; 43 } 44 if ("".equals(FilterNull(o.toString()))) { 45 return false; 46 } else { 47 return true; 48 } 49 } 50 51 /** 52 * 是否可转化为数字 53 * @param o 54 * @return 55 */ 56 public static boolean isNum(Object o) { 57 try { 58 new BigDecimal(o.toString()); 59 return true; 60 } catch (Exception e) { 61 } 62 return false; 63 } 64 65 /** 66 * 是否可转化为Long型数字 67 * @param o 68 * @return 69 */ 70 public static boolean isLong(Object o) { 71 try { 72 new Long(o.toString()); 73 return true; 74 } catch (Exception e) { 75 } 76 return false; 77 } 78 79 /** 80 * 转化为Long型数字, 不可转化时返回0 81 * @param o 82 * @return 83 */ 84 public static Long toLong(Object o) { 85 if (isLong(o)) { 86 return new Long(o.toString()); 87 } else { 88 return 0L; 89 } 90 } 91 92 /** 93 * 转化为int型数字, 不可转化时返回0 94 * @param o 95 * @return 96 */ 97 public static int toInt(Object o) { 98 if (isNum(o)) { 99 return new Integer(o.toString()); 100 } else { 101 return 0; 102 } 103 } 104 105 /** 106 * 按字符从左截取固定长度字符串, 防止字符串超长, 默认截取50 107 * @param o 108 * @return 109 */ 110 public static String holdmaxlength(Object o) { 111 int maxlength = 50; 112 if (o == null) { 113 return ""; 114 } 115 return subStringByByte(o, maxlength); 116 } 117 118 /** 119 * 从左截取固定长度字符串, 防止字符串超长, maxlength为0时默认50 120 * @param o 121 * @return 122 */ 123 public static String holdmaxlength(Object o, int maxlength) { 124 maxlength = maxlength <= 0 ? 50 : maxlength; 125 if (o == null) { 126 return ""; 127 } 128 return subStringByByte(o, maxlength); 129 } 130 131 /** 132 * 按字节截取字符串 133 * @param str 134 * @param len 135 * @return 136 */ 137 private static String subStringByByte(Object o, int len) { 138 if (o == null) { 139 return ""; 140 } 141 String str = o.toString(); 142 String result = null; 143 if (str != null) { 144 byte[] a = str.getBytes(); 145 if (a.length <= len) { 146 result = str; 147 } else if (len > 0) { 148 result = new String(a, 0, len); 149 int length = result.length(); 150 if (str.charAt(length - 1) != result.charAt(length - 1)) { 151 if (length < 2) { 152 result = null; 153 } else { 154 result = result.substring(0, length - 1); 155 } 156 } 157 } 158 } 159 return result; 160 } 161 162 /** 163 * 逗号表达式_添加 164 * @param commaexpress 原逗号表达式 如 A,B 165 * @param newelement 新增元素 C 166 * @return A,B,C 167 */ 168 public static String comma_add(String commaexpress, String newelement) { 169 return comma_rect(FilterNull(commaexpress) + "," + FilterNull(newelement)); 170 } 171 172 /** 173 * 逗号表达式_删除 174 * @param commaexpress 原逗号表达式 如 A,B,C 175 * @param delelement 删除元素 C,A 176 * @return B 177 */ 178 public static String comma_del(String commaexpress, String delelement) { 179 if ((commaexpress == null) || (delelement == null) || (commaexpress.trim().equals(delelement.trim()))) { 180 return ""; 181 } 182 String[] deletelist = delelement.split(","); 183 String result = commaexpress; 184 for (String delstr : deletelist) { 185 result = comma_delone(result, delstr); 186 } 187 return result; 188 } 189 190 /** 191 * 逗号表达式_单一删除 192 * @param commaexpress 原逗号表达式 如 A,B,C 193 * @param delelement 删除元素 C 194 * @return A,B 195 */ 196 public static String comma_delone(String commaexpress, String delelement) { 197 if ((commaexpress == null) || (delelement == null) || (commaexpress.trim().equals(delelement.trim()))) { 198 return ""; 199 } 200 String[] strlist = commaexpress.split(","); 201 StringBuffer result = new StringBuffer(); 202 for (String str : strlist) { 203 if ((!str.trim().equals(delelement.trim())) && (!"".equals(str.trim()))) { 204 result.append(str.trim() + ","); 205 } 206 } 207 return result.toString().substring(0, result.length() - 1 > 0 ? result.length() - 1 : 0); 208 } 209 210 /** 211 * 逗号表达式_判断是否包含元素 212 * @param commaexpress 逗号表达式 A,B,C 213 * @param element C 214 * @return true 215 */ 216 public static boolean comma_contains(String commaexpress, String element) { 217 boolean flag = false; 218 commaexpress = FilterNull(commaexpress); 219 element = FilterNull(element); 220 if (!"".equals(commaexpress) && !"".equals(element)) { 221 String[] strlist = commaexpress.split(","); 222 for (String str : strlist) { 223 if (str.trim().equals(element.trim())) { 224 flag = true; 225 break; 226 } 227 } 228 } 229 return flag; 230 } 231 232 /** 233 * 逗号表达式_取交集 234 * @param commaexpressA 逗号表达式1 A,B,C 235 * @param commaexpressB 逗号表达式2 B,C,D 236 * @return B,C 237 */ 238 public static String comma_intersect(String commaexpressA, String commaexpressB) { 239 commaexpressA = FilterNull(commaexpressA); 240 commaexpressB = FilterNull(commaexpressB); 241 StringBuffer result = new StringBuffer(); 242 String[] strlistA = commaexpressA.split(","); 243 String[] strlistB = commaexpressB.split(","); 244 for (String boA : strlistA) { 245 for (String boB : strlistB) { 246 if (boA.trim().equals(boB.trim())) { 247 result.append(boA.trim() + ","); 248 } 249 } 250 } 251 return comma_rect(result.toString()); 252 } 253 254 /** 255 * 逗号表达式_规范 256 * @param commaexpress 逗号表达式 ,A,B,B,,C 257 * @return A,B,C 258 */ 259 public static String comma_rect(String commaexpress) { 260 commaexpress = FilterNull(commaexpress); 261 String[] strlist = commaexpress.split(","); 262 StringBuffer result = new StringBuffer(); 263 for (String str : strlist) { 264 if (!("".equals(str.trim())) && !("," + result.toString() + ",").contains("," + str + ",") && !"null".equals(str)) { 265 result.append(str.trim() + ","); 266 } 267 } 268 return result.toString().substring(0, (result.length() - 1 > 0) ? result.length() - 1 : 0); 269 } 270 271 /** 272 * 逗号表达式_反转 273 * @param commaexpress A,B,C 274 * @return C,B,A 275 */ 276 public static String comma_reverse(String commaexpress) { 277 commaexpress = FilterNull(commaexpress); 278 String[] ids = commaexpress.split(","); 279 StringBuffer str = new StringBuffer(); 280 for (int i = ids.length - 1; i >= 0; i--) { 281 str.append(ids[i] + ","); 282 } 283 return comma_rect(str.toString()); 284 } 285 286 /** 287 * 逗号表达式_获取首对象 288 * @param commaexpress A,B,C 289 * @return A 290 */ 291 public static String comma_first(String commaexpress) { 292 commaexpress = FilterNull(commaexpress); 293 String[] ids = commaexpress.split(","); 294 System.out.println("length:" + ids.length); 295 if ((ids != null) && (ids.length > 0)) { 296 return ids[0]; 297 } 298 return null; 299 } 300 301 /** 302 * 逗号表达式_获取尾对象 303 * @param commaexpress A,B,C 304 * @return C 305 */ 306 public static String comma_last(String commaexpress) { 307 commaexpress = FilterNull(commaexpress); 308 String[] ids = commaexpress.split(","); 309 if ((ids != null) && (ids.length > 0)) { 310 return ids[(ids.length - 1)]; 311 } 312 return null; 313 } 314 315 /** 316 * 替换字符串,支持字符串为空的情形 317 * @param strData 318 * @param regex 319 * @param replacement 320 * @return 321 */ 322 public static String replace(String strData, String regex, String replacement) { 323 return strData == null ? "" : strData.replaceAll(regex, replacement); 324 } 325 326 /** 327 * 字符串转为HTML显示字符 328 * @param strData 329 * @return 330 */ 331 public static String String2HTML(String strData){ 332 if( strData == null || "".equals(strData) ){ 333 return "" ; 334 } 335 strData = replace(strData, "&", "&"); 336 strData = replace(strData, "<", "<"); 337 strData = replace(strData, ">", ">"); 338 strData = replace(strData, """, """); 339 return strData; 340 } 341 342 /** * 把异常信息转换成字符串,以方便保存 */ 343 public static String getexceptionInfo(Exception e){ 344 ByteArrayOutputStream baos = new ByteArrayOutputStream(); 345 try{ 346 e.printStackTrace(new PrintStream(baos)); 347 }finally{ 348 try { 349 baos.close(); 350 } catch (IOException e1) { 351 e1.printStackTrace(); 352 } 353 } 354 return baos.toString(); 355 } 356 357 /** 过滤特殊符号 */ 358 public static String regex(String str){ 359 Pattern pattern = Pattern.compile("[0-9-:/ ]");// 中文汉字编码区间 360 Matcher matcher; 361 char[] array = str.toCharArray(); 362 for (int i = 0; i < array.length; i++) { 363 matcher = pattern.matcher(String.valueOf(array[i])); 364 if (!matcher.matches()) {// 空格暂不替换 365 str = str.replace(String.valueOf(array[i]), "");// 特殊字符用空字符串替换 366 } 367 } 368 369 return str; 370 } 371 372 public static String comma_insert(String commaexpress, String newelement,int index){ 373 int length = commaexpress.length(); 374 if ( index > length ) { 375 index = length; 376 }else if ( index < 0){ 377 index = 0; 378 } 379 String result = commaexpress.substring(0, index) + newelement + commaexpress.substring(index, commaexpress.length()); 380 return result; 381 } 382 383 /** 384 * 将"/"替换成"" 385 * @param strDir 386 * @return 387 */ 388 public static String changeDirection(String strDir) { 389 String s = "/"; 390 String a = "\"; 391 if (strDir != null && !" ".equals(strDir)) { 392 if (strDir.contains(s)) { 393 strDir = strDir.replace(s, a); 394 } 395 } 396 return strDir; 397 } 398 399 /** 400 * 去除字符串中 头和尾的空格,中间的空格保留 401 * 402 * @Title: trim 403 * @Description: TODO 404 * @return String 405 * @throws 406 */ 407 public static String trim(String s) { 408 int i = s.length();// 字符串最后一个字符的位置 409 int j = 0;// 字符串第一个字符 410 int k = 0;// 中间变量 411 char[] arrayOfChar = s.toCharArray();// 将字符串转换成字符数组 412 while ((j < i) && (arrayOfChar[(k + j)] <= ' ')) 413 ++j;// 确定字符串前面的空格数 414 while ((j < i) && (arrayOfChar[(k + i - 1)] <= ' ')) 415 --i;// 确定字符串后面的空格数 416 return (((j > 0) || (i < s.length())) ? s.substring(j, i) : s);// 返回去除空格后的字符串 417 } 418 /** 419 * 得到大括号中的内容 420 * @param str 421 * @return 422 */ 423 public static String getBrackets(String str) { 424 int a = str.indexOf("{"); 425 int c = str.indexOf("}"); 426 if (a >= 0 && c >= 0 & c > a) { 427 return (str.substring(a + 1, c)); 428 } else { 429 return str; 430 } 431 } 432 433 /** 434 * 将字符串中所有的,替换成| 435 * 436 * @param str 437 * @return 438 */ 439 public static String commaToVerti(String str) { 440 if (str != null && !"".equals(str) && str.contains(",")) { 441 return str.replaceAll(",", "|"); 442 } else { 443 return str; 444 } 445 } 446 447 /** 448 * 去掉字符串中、前、后的空格 449 * @param args 450 * @throws IOException 451 */ 452 public static String extractBlank(String name) { 453 if (name != null && !"".equals(name)) { 454 return name.replaceAll(" +", ""); 455 } else { 456 return name; 457 } 458 } 459 460 /** 461 * 将null换成"" 462 * @param str 463 * @return 464 */ 465 public static String ConvertStr(String str) { 466 return str != null && !"null".equals(str) ? str.trim() : ""; 467 } 468 469 public static void main(String[] args){ 470 System.out.println(isNum("a")); 471 System.out.println(isNum("-1")); 472 System.out.println(isNum("01")); 473 System.out.println(isNum("1E3")); 474 System.out.println(isNum("1.a")); 475 System.out.println(isLong("014650")); 476 System.out.println(Long.parseLong("014650")); 477 } 478 }