代码工具类

221 阅读4分钟

文字转拼音工具类

<!-- 文字转拼音工具类 -->
<dependency>
    <groupId>com.hankcs</groupId>
    <artifactId>hanlp</artifactId>
    <version>portable-1.8.3</version>
</dependency>
import com.hankcs.hanlp.dictionary.py.Pinyin;
import com.hankcs.hanlp.dictionary.py.PinyinDictionary;
import org.apache.commons.lang3.StringUtils;

import java.util.List;

/**
 * description: 文字转拼音工具类
 * author: chengpengai
 * date: 2023-04-25 周二 1:49 PM
 */
public class PinyUtil {
   /**
    * 获取中文完整拼音
    *
    * @param chineseStr
    * @return
    */
   public static String getPinyin(String chineseStr) {
      if(StringUtils.isEmpty(chineseStr)){
         return "";
      }
      List<Pinyin> pinyins = PinyinDictionary.convertToPinyin(chineseStr);
      StringBuilder stringBuilder = new StringBuilder();
      for (Pinyin pinyin : pinyins) {
         stringBuilder.append(pinyin.getPinyinWithoutTone());
      }
      return stringBuilder.toString();
   }
   
   /**
    * 获取中文完整拼音 带声调
    *
    * @param chineseStr
    * @return
    */
   public static String getPinyinAndTone(String chineseStr) {
      if(StringUtils.isEmpty(chineseStr)){
         return "";
      }
      List<Pinyin> pinyins = PinyinDictionary.convertToPinyin(chineseStr);
      if (pinyins==null || pinyins.size()<=0) {
         return "";
      }
      StringBuilder stringBuilder = new StringBuilder();
      for (Pinyin pinyin : pinyins) {
         //获取带声调带拼音
         stringBuilder.append(pinyin.getPinyinWithToneMark());
         //获取数字标识声调
//       stringBuilder.append(pinyin);
         //没有声调标识
//       stringBuilder.append(pinyin.getPinyinWithoutTone());
         //获取声母
//       stringBuilder.append(pinyin.getShengmu());
         //获取韵母
//       stringBuilder.append(pinyin.getYunmu());
      }
      
      return stringBuilder.toString();
      
   }
   
   /**
    * 获取中文拼音首字母
    *
    * @param chineseStr
    * @return
    */
   public static String getInitial(String chineseStr) {
      if(StringUtils.isEmpty(chineseStr)){
         return "";
      }
      
      List<Pinyin> pinyins = PinyinDictionary.convertToPinyin(chineseStr);
      if (pinyins==null || pinyins.size()<=0) {
         return "";
      }
      return String.valueOf(pinyins.get(0).getPinyinWithoutTone().charAt(0));
   }
   
   public static void main(String[] args) {
      //不带声调的 文字全拼
      System.out.println(getPinyin("重庆"));
      //获取 文章首字母
      System.out.println(getInitial("重庆"));
      //获取带声调的文字全拼
      System.out.println(getPinyinAndTone("重庆"));
   }
   
}

每年周数获取工具类

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.time.*;
import java.util.Calendar;
import java.util.Date;

/**
 * description: 日期 周期 处理工具类
 * author: chengpengai
 * date: 2023-04-18 周二 2:07 PM
 */
public class WeekUtil {
   
   
   /**
    * 根据年份 获取总周期数量
    * @param year
    * @return
    */
   public static Integer getWeekTotalByYear(Integer year){
      LocalDate lastDate = getLastDateByYear(year);
      return getWeekByDate(lastDate);
   }
   
   /**
    * 根据日期获取 当年所属周
    * @param date
    * @return
    */
   public static Integer getWeekByDate(LocalDate date){
      return getWeekByDate(LocalDateUtil.localDateToStr(date,"yyyy-MM-dd"));
   }
   
   
   /**
    * 根据日期获取 当年所属周
    * @param date
    * @return
    */
   public static Integer getWeekByDate(LocalDateTime date){
      return getWeekByDate(LocalDateTimeUtil.localDateTimeToStr(date));
   }
   
   /**
    * 根据日期获取 当年所属周
    * @param date
    * @return
    */
   public static Integer getWeekByDate(String date){

      Integer week = null;
      try {
         
         SimpleDateFormat simpleDateFormat = new SimpleDateFormat("yyyy-MM-dd");
         
         Date parse = null;
         parse = simpleDateFormat.parse(date);
         Calendar calendar = Calendar.getInstance();
         //设置星期一为一周开始的第一天
         calendar.setFirstDayOfWeek(Calendar.MONDAY);
         //设置在一年中第一个星期所需最少天数
         calendar.setMinimalDaysInFirstWeek(7);
         calendar.setTime(parse);
         week = calendar.get(Calendar.WEEK_OF_YEAR);
      } catch (ParseException e) {
         e.printStackTrace();
      }
      return week;
   }
   
   
   /**
    * 根据 年 周期 获取开始事件
    * @param year
    * @param weekNo
    * @return
    */
   public static String getStartDayOfWeekNo(int year,int weekNo){
      Calendar cal = getCalendarFormYear(year);
      cal.set(Calendar.WEEK_OF_YEAR, weekNo);
      cal.setFirstDayOfWeek(Calendar.MONDAY);
      cal.setMinimalDaysInFirstWeek(7);
      return cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" + cal.get(Calendar.DAY_OF_MONTH);
   }
   
   /**
    * 根据 年 周期 获取结束事件
    * @param year
    * @param weekNo
    * @return
    */
   public static String getEndDayOfWeekNo(int year,int weekNo){
      Calendar cal = getCalendarFormYear(year);
      cal.set(Calendar.WEEK_OF_YEAR, weekNo);
      cal.add(Calendar.DAY_OF_WEEK, 6);
      return cal.get(Calendar.YEAR) + "-" + (cal.get(Calendar.MONTH) + 1) + "-" +
         cal.get(Calendar.DAY_OF_MONTH);
   }
   
   
    private static Calendar getCalendarFormYear(int year){
      Calendar cal = Calendar.getInstance();
      cal.set(Calendar.DAY_OF_WEEK, Calendar.MONDAY);
      cal.setFirstDayOfWeek(Calendar.DAY_OF_MONTH);
      cal.set(Calendar.YEAR, year);
      return cal;
   }
   
   private static LocalDate getLastDateByYear(Integer year){
      // 创建一个LocalDate对象表示当前年的最后一天
      LocalDate lastDayOfYear = LocalDate.ofYearDay(year, 365);
      
      // 如果当前年是闰年,则最后一天为366天
      if (lastDayOfYear.isLeapYear()) {
         lastDayOfYear = LocalDate.ofYearDay(year, 366);
      }
      
      return lastDayOfYear;
   }
   
   public static void main(String[] args) throws ParseException {
      
      //获取2022年总周数
      System.out.println(getWeekTotalByYear(2022));
      
      //根据日期获取 所在周数
      System.out.println(getWeekByDate(LocalDateUtil.strToLocalDate("2023-01-01")));
      System.out.println(getWeekByDate(LocalDateTimeUtil.formatStrToLocalDateTime("2023-01-01")));
      System.out.println(getWeekByDate("2023-01-01"));
      
      //根据年 周数 获取开始和结束时间
      System.out.println("开始时间: " + getStartDayOfWeekNo(2022,52) );
      System.out.println("结束时间:" + getEndDayOfWeekNo(2022,52) );
      
   }
   
}

http图片转换为MultipartFile

public static void main(String[] args) throws IOException {
   String url = "http://bpic.588ku.com/element_origin_min_pic/19/03/15/75076c485081d15ed9c224ad3e4ce4a1.jpg";
   MultipartFile fileItem = createFileItem(url);
   File folder = new File("/Users/ai/Desktop");
   folder.mkdirs();
   fileItem.transferTo(new File(folder + "/pic.jpg"));
}

private static MultipartFile createFileItem(String url) {

   FileItem item = null;
   try {
      HttpURLConnection conn = (HttpURLConnection) new URL(url).openConnection();
      conn.setReadTimeout(30000);
      conn.setConnectTimeout(30000);
      //设置应用程序要从网络连接读取数据
      conn.setDoInput(true);
      conn.setRequestMethod("GET");
      if (conn.getResponseCode() == HttpURLConnection.HTTP_OK) {
         InputStream is = conn.getInputStream();
         // 创建工厂对象
         FileItemFactory factory = new DiskFileItemFactory(16, null);
         // 通过工厂对象创建 item 对象
         item = factory.createItem(null, ContentType.IMAGE_JPEG.toString(), false, null);
         OutputStream os = item.getOutputStream();
         int bytesRead = 0;
         byte[] buffer = new byte[8192];
         while ((bytesRead = is.read(buffer, 0, 8192)) != -1) {
            os.write(buffer, 0, bytesRead);
         }
         os.close();
         is.close();
      }
   } catch (IOException e) {
      throw new RuntimeException("文件下载失败", e);
   }

   return new CommonsMultipartFile(item);
}

根据身份证号判断性别

 public static String judgeGender(String idNumber) throws IllegalArgumentException{
         System.out.println(idNumber.length());
         if(idNumber.length() != 18 && idNumber.length() != 15){
             throw new IllegalArgumentException("身份证号长度错误");
         }
         int gender = 0;
         if(idNumber.length() == 18){
             //如果身份证号18位,取身份证号倒数第二位
             char c = idNumber.charAt(idNumber.length() - 2);
             gender = Integer.parseInt(String.valueOf(c));
         }else{
             //如果身份证号15位,取身份证号最后一位
             char c = idNumber.charAt(idNumber.length() - 1);
             gender = Integer.parseInt(String.valueOf(c));
         }
         System.out.println("gender = " + gender);
         if(gender % 2 == 1){
             return "男";
         }else{
             return "女";
         }
     }

根据身份证的号码算出当前身份证持有者的年龄

public static int countAge(String idNumber) {
         if(idNumber.length() != 18 && idNumber.length() != 15){
             throw new IllegalArgumentException("身份证号长度错误");
         }
         String year;
         String yue;
         String day;
         if(idNumber.length() == 18){
             year = idNumber.substring(6).substring(0, 4);// 得到年份
             yue = idNumber.substring(10).substring(0, 2);// 得到月份
             day = idNumber.substring(12).substring(0,2);//得到日
         }else{
             year = "19" + idNumber.substring(6, 8);// 年份
             yue = idNumber.substring(8, 10);// 月份
             day = idNumber.substring(10, 12);//日
         }
         Date date = new Date();// 得到当前的系统时间
         SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd");
         String fyear = format.format(date).substring(0, 4);// 当前年份
         String fyue = format.format(date).substring(5, 7);// 月份
         String fday=format.format(date).substring(8,10);//
         int age = 0;
         if(Integer.parseInt(yue) == Integer.parseInt(fyue)){//如果月份相同
             if(Integer.parseInt(day) <= Integer.parseInt(fday)){//说明已经过了生日或者今天是生日
                 age = Integer.parseInt(fyear) - Integer.parseInt(year);
             }
         }else{
 
            if(Integer.parseInt(yue) < Integer.parseInt(fyue)){
                //如果当前月份大于出生月份
                age = Integer.parseInt(fyear) - Integer.parseInt(year);
            }else{
                //如果当前月份小于出生月份,说明生日还没过
                age = Integer.parseInt(fyear) - Integer.parseInt(year) - 1;
            }
         }
         System.out.println("age = " + age);
         return age;
     }