package com.taover.repository; import java.net.URL; import java.text.SimpleDateFormat; import java.util.Date; public class UtilsString { /** * 格式化日期区间字符串 * @param source * @param splitStr * @param dateFormat * @return * @throws Exception */ public static Date[] getDateFromString(String source, String splitStr, String dateFormat) throws Exception{ Date[] resultObj = new Date[2]; Date createdAtStart = null; Date createdAtEnd = null; if(source != null && !"".equals(source)){ String[] createdAtArr = source.split(splitStr); SimpleDateFormat sdf = new SimpleDateFormat(dateFormat); if(createdAtArr.length > 0){ createdAtStart = sdf.parse(createdAtArr[0]); } if(createdAtArr.length > 1){ createdAtEnd = sdf.parse(createdAtArr[1]); } } resultObj[0] = createdAtStart; resultObj[1] = createdAtEnd; return resultObj; } /** * 获取URL path部分 * @param url * @return */ public static String getUrlPath(String url){ if(url == null){ return null; } if(url.startsWith("http")){ try{ URL dataUrl = new URL(url); return dataUrl.getPath(); }catch(Exception e){ e.printStackTrace(); } } return url; } /** * 在compares字符数组查找pattern字符串,找到则返回字串在数组中的索引,未找到返回-1 * @param pattern * @param compares * @return */ public static int getStringIndex(String pattern, String compares[]){ //参数检验 if(pattern==null || compares==null){ return -1; } //循环遍历compares for(int i=0; iLong.MAX_VALUE || value0; --i){ long baseDiv = (long) Math.pow(10, i-1); long baseRand = (long) Math.pow(10, i); long currentDigit = value % baseRand / baseDiv; if(currentDigit == 0){ result = result + preffixChar; }else{ result = result + currentDigit; } } return result; } /** * 将驼峰式命名的字符串转换为下划线大写方式。如果转换前的驼峰式命名的字符串为空,则返回空字符串。
* 例如:HelloWorld->HELLO_WORLD * @param name 转换前的驼峰式命名的字符串 * @return 转换后下划线大写方式命名的字符串 */ public static String underscoreName(String name) { StringBuilder result = new StringBuilder(); if (name != null && name.length() > 0) { // 将第一个字符处理成大写 result.append(name.substring(0, 1).toUpperCase()); // 循环处理其余字符 for (int i = 1; i < name.length(); i++) { String s = name.substring(i, i + 1); // 在大写字母前添加下划线 if (Character.isUpperCase(s.charAt(0)) && Character.isLetter(s.charAt(0))) { result.append("_"); } // 其他字符直接转成大写 result.append(s.toUpperCase()); } } return result.toString(); } /** * 将下划线大写方式命名的字符串转换为驼峰式。如果转换前的下划线大写方式命名的字符串为空,则返回空字符串。
* 例如:HELLO_WORLD->HelloWorld * @param name 转换前的下划线大写方式命名的字符串 * @return 转换后的驼峰式命名的字符串 */ public static String camelName(String name) { StringBuilder result = new StringBuilder(); // 快速检查 if (name == null || name.isEmpty()) { // 没必要转换 return ""; } else if (!name.contains("_")) { // 不含下划线,仅将首字母小写 return name.substring(0, 1).toLowerCase() + name.substring(1); } // 用下划线将原始字符串分割 String camels[] = name.split("_"); for (String camel : camels) { // 跳过原始字符串中开头、结尾的下换线或双重下划线 if (camel.isEmpty()) { continue; } // 处理真正的驼峰片段 if (result.length() == 0) { // 第一个驼峰片段,全部字母都小写 result.append(camel.toLowerCase()); } else { // 其他的驼峰片段,首字母大写 result.append(camel.substring(0, 1).toUpperCase()); result.append(camel.substring(1).toLowerCase()); } } return result.toString(); } public static String getRandomStr(int digitNum){ int numStartZero = 48; int charStartUpperA = 65; int charStartLowerA = 97; int numSelectCount = 10; int charSelectCount = 26; int numCount = numSelectCount+2*charSelectCount; String randomResult = ""; for(int i=0; i