【Java】字符串处理:按原表名+日期生成新表名,要求长度不超过限制,如果超限则用日期覆盖原名尾部
需求:
如题
代码:
package newtname; import java.time.LocalDateTime; import java.time.format.DateTimeFormatter; public class Test { /** * 按旧表名+当前日期生成新表名 * 要求新表名不超过最大长度 * 如果超过则截取原有表名的尾部 * * @param tname 原有表名 * @param maxLen 最大长度 * @return */ private static String generateNewTname(String tname,final int maxLen) { final String apdx=getCurrDate(); final int apdxLen=9; if(tname.length()+apdxLen<=maxLen) { return tname+apdx; }else { char[] arr=new char[maxLen]; final int tnameLen=tname.length(); int limit=tnameLen>maxLen?maxLen:tnameLen; // 前半(取原有表名)部分 char[] arrFrom=tname.toCharArray(); for(int i=0;i<limit;i++) { arr[i]=arrFrom[i]; } // 后半(取日期)部分 char[] arrApdx=apdx.toCharArray(); for(int i=0;i<apdxLen;i++) { arr[maxLen-apdxLen+i]=arrApdx[i]; } return String.valueOf(arr); } } // 取当前日期 public static String getCurrDate() { DateTimeFormatter formatter= DateTimeFormatter.ofPattern("_yyyyMMdd"); return formatter.format(LocalDateTime.now()); } // 测试 public static void main(String[] args) { String[] tnames= {"emp","emp1","emp12","emp123","emp1234","emp12345","emp123456","emp1234567" ,"emp12345678","emp123456789","emp1234567890","emp1234567890a","emp1234567890ab","emp1234567890abc","emp123456790abcd"}; for(String tname:tnames) { String newTname=generateNewTname(tname,20); System.out.println(String.format("%30s %30s", tname,newTname)); } } }
输出:
emp emp_20220809
emp1 emp1_20220809
emp12 emp12_20220809
emp123 emp123_20220809
emp1234 emp1234_20220809
emp12345 emp12345_20220809
emp123456 emp123456_20220809
emp1234567 emp1234567_20220809
emp12345678 emp12345678_20220809
emp123456789 emp12345678_20220809
emp1234567890 emp12345678_20220809
emp1234567890a emp12345678_20220809
emp1234567890ab emp12345678_20220809
emp1234567890abc emp12345678_20220809
emp123456790abcd emp12345679_20220809
总结:
用数组操作进行两次赋值,避免了容易导致复杂错乱的if...else结构。
END
分类:
Java.字符串处理
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2021-08-09 【MySQL】修改表的存储引擎
2021-08-09 【MySQL】查看MySQL的默认存储引擎(Win环境)
2016-08-09 jQuery的$.get和$.ajax函数对比
2015-08-09 【Canvas与徽章】蓝底金圈白字不等式徽章
2014-08-09 如何获得一个网站的图标
2013-08-09 【JS】JavaScript中如何开立方