package com.zs.utils;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.List;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class MyUtil {
/**
* @Title: listPaging
* @Description: list分页
* @param list
* @param pageNum
* @param pageSize
* @return List<String>
*/
public List<String> listPaging(List<String> list, Integer pageNum, Integer pageSize) {
if (list == null) {
return null;
}
if (list.size() == 0) {
return null;
}
Integer count = list.size(); // 记录总数
Integer pageCount = 0; // 页数
if (count % pageSize == 0) {
pageCount = count / pageSize;
} else {
pageCount = count / pageSize + 1;
}
int fromIndex = 0; // 开始索引
int toIndex = 0; // 结束索引
if (pageNum != pageCount) {
fromIndex = (pageNum - 1) * pageSize;
toIndex = fromIndex + pageSize;
} else {
fromIndex = (pageNum - 1) * pageSize;
toIndex = count;
}
List<String> pageList = list.subList(fromIndex, toIndex);
return pageList;
}
/**
* @Title: binarySearch
* @Description: list集合 根据某一字段值 二分查找
* @param arr
* @param findElem
* @return int
*/
public int binarySearch(String arr[], String findElem) {
int low = 0;
int high = arr.length - 1;
int mid;
while (low <= high) {
mid = (low + high) / 2;
// 如果要查找的元素findElem小于中间位置的元素mid,指向数组的较大端的high索引重新指向中间索引mid的左边(mid-1)
if (findElem.compareTo(arr[mid]) < 0) {
high = mid - 1;
}
// 如果要查找的元素findElem大于中间位置的元素mid,指向数组的较小端的low索引重新指向中间索引mid的右边(mid+1)
if (findElem.compareTo(arr[mid]) > 0) {
low = mid + 1;
}
if (findElem.compareTo(arr[mid]) == 0) {
return mid;
}
}
return -1;
}
public static boolean isValidDate(String str, String strPattern) {
boolean convertSuccess = true;
SimpleDateFormat format = new SimpleDateFormat(strPattern);
try {
format.setLenient(false);
format.parse(str);
/*
* Date day=new Date(); SimpleDateFormat df = new SimpleDateFormat("yyyy");
* String thisYear = df.format(day)+"01"; if (str.compareTo(thisYear) >0) {
* convertSuccess = true; } else { convertSuccess=false; }
*/
} catch (ParseException e) {
// e.printStackTrace();
// 如果throw java.text.ParseException或者NullPointerException,就说明格式不对
convertSuccess = false;
} catch (NullPointerException e) {
convertSuccess = false;
}
return convertSuccess;
}
public static void main(String[] args) {
System.out.println(isValidDate("2020/09/01", "yyyy/mm/dd"));
}
public static boolean isNotEmpty(String s) {
return null != s && !s.isEmpty();
}
public static boolean isEmpty(String s) {
return null == s || s.isEmpty();
}
/**
* @description: 下划线转大驼峰式
* @param: [source]
* 请求参数
* @return: java.lang.String 响应参数
*/
public static String underlineToBigCamelCase(String source) {
String[] strs = source.split("_");
StringBuffer stringBuffer = new StringBuffer();
for (String s : strs) {
stringBuffer.append(upperFirst(s.toLowerCase()));
}
return String.valueOf(stringBuffer);
}
/**
* @description: 中划线转大驼峰式
* @param: [source]
* 请求参数
* @return: java.lang.String 响应参数
*/
public static String strikeToBigCamelCase(String source) {
String[] strs = source.split("-");
StringBuffer stringBuffer = new StringBuffer();
for (String s : strs) {
stringBuffer.append(upperFirst(s.toLowerCase()));
}
return String.valueOf(stringBuffer);
}
/**
* @description: 中划线转小驼峰式
* @param: [source]
* 请求参数
* @return: java.lang.String 响应参数
*/
public static String strikeToLittleCamelCase(String source) {
return lowerFirst(strikeToBigCamelCase(source));
}
/**
* @description: 下划线转小驼峰式
* @param: [source]
* 请求参数
* @return: java.lang.String 响应参数
*/
public static String underlineToLittleCamelCase(String source) {
return lowerFirst(underlineToBigCamelCase(source));
}
/**
* @description: 首字母大写
* @param: [source]
* 请求参数
* @return: java.lang.String 响应参数
*/
public static String upperFirst(String source) {
char[] chars = source.toCharArray();
chars[0] = 97 <= chars[0] && chars[0] <= 122 ? (char) (chars[0] - 32) : chars[0];
return String.valueOf(chars);
}
/**
* @description: 首字母小写
* @param: [source]
* 请求参数
* @return: java.lang.String 响应参数
*/
public static String lowerFirst(String source) {
char[] chars = source.toCharArray();
chars[0] = 65 <= chars[0] && chars[0] <= 90 ? (char) (chars[0] + 32) : chars[0];
return String.valueOf(chars);
}
/**
* @description: 校验邮箱格式
* @param: [email]
* 请求参数
* @return: boolean 响应参数
*/
public static boolean validateEmailFormat(String email) {
if (StringUtil.isEmpty(email)) {
return false;
}
String regex = "^([a-z0-9A-Z]+[-|.]?)+[a-z0-9A-Z]@([a-z0-9A-Z]+(-[a-z0-9A-Z]+)?\\.)+[a-zA-Z]{2,}$";
Pattern pattern = Pattern.compile(regex);
Matcher matcher = pattern.matcher(email);
return matcher.matches();
}
}