网站首页 > java教程 正文
在日常的Java开发中,字符串(String)是最常用的数据类型之一。无论是数据处理、文本分析还是界面展示,都离不开对字符串的精细操作。然而,尽管Java标准库提供了丰富的字符串处理方法,但在实际项目中,我们常常需要一些更高级、更便捷的字符串操作功能。为此,本文将介绍一个自定义的字符串操作工具类——StrUtil,它集成了常用的字符串处理功能,旨在简化开发流程,提高代码的可读性和可维护性。
StrUtil工具类代码
Java
深色版本
1public class StrUtil {
2
3 /**
4 * 检查字符串是否为空(null或"")
5 */
6 public static boolean isEmpty(String str) {
7 return str == null || str.isEmpty();
8 }
9
10 /**
11 * 检查字符串是否非空
12 */
13 public static boolean isNotEmpty(String str) {
14 return !isEmpty(str);
15 }
16
17 /**
18 * 字符串首字母转小写
19 */
20 public static String toLowerCaseFirstOne(String str) {
21 if (isEmpty(str)) return str;
22 if (Character.isLowerCase(str.charAt(0))) return str;
23 return (new StringBuilder()).append(Character.toLowerCase(str.charAt(0))).append(str.substring(1)).toString();
24 }
25
26 /**
27 * 字符串首字母转大写
28 */
29 public static String toUpperCaseFirstOne(String str) {
30 if (isEmpty(str)) return str;
31 if (Character.isUpperCase(str.charAt(0))) return str;
32 return (new StringBuilder()).append(Character.toUpperCase(str.charAt(0))).append(str.substring(1)).toString();
33 }
34
35 /**
36 * 字符串分割,返回List<String>
37 */
38 public static List<String> splitToList(String str, String separator) {
39 if (isEmpty(str)) return Collections.emptyList();
40 String[] parts = str.split(separator);
41 return Arrays.asList(parts);
42 }
43
44 /**
45 * 字符串拼接,使用指定分隔符
46 */
47 public static String join(List<String> list, String separator) {
48 if (list == null || list.isEmpty()) return "";
49 return String.join(separator, list);
50 }
51
52 /**
53 * 替换字符串中的子串,不限次数
54 */
55 public static String replaceAll(String str, String oldStr, String newStr) {
56 if (isEmpty(str) || isEmpty(oldStr)) return str;
57 return str.replace(oldStr, newStr);
58 }
59
60 /**
61 * 获取字符串的字节数
62 */
63 public static int byteSize(String str) {
64 if (isEmpty(str)) return 0;
65 return str.getBytes(StandardCharsets.UTF_8).length;
66 }
67
68 /**
69 * 截取字符串至指定字节长度,超出部分用省略号替换
70 */
71 public static String truncateByByteLength(String str, int maxByteLength) {
72 if (isEmpty(str) || byteSize(str) <= maxByteLength) return str;
73 int len = 0;
74 for (int i = 0; i < str.length(); i++) {
75 len += str.substring(i, i + 1).getBytes(StandardCharsets.UTF_8).length;
76 if (len > maxByteLength - 3) { // 预留3个字节给省略号
77 return str.substring(0, i) + "...";
78 }
79 }
80 return str;
81 }
82}
使用StrUtil工具类
- 检查字符串是否为空
- Java
- 深色版本
- 1System.out.println(StrUtil.isEmpty(null)); // true 2System.out.println(StrUtil.isEmpty("")); // true 3System.out.println(StrUtil.isNotEmpty("Hello")); // true
- 字符串首字母大小写转换
- Java
- 深色版本
- 1System.out.println(StrUtil.toLowerCaseFirstOne("HelloWorld")); // helloWorld 2System.out.println(StrUtil.toUpperCaseFirstOne("helloWorld")); // HelloWorld
- 字符串分割与拼接
- Java
- 深色版本
- 1List<String> words = StrUtil.splitToList("apple,banana,orange", ","); 2System.out.println(words); // [apple, banana, orange] 3 4String fruits = StrUtil.join(Arrays.asList("apple", "banana", "orange"), "; "); 5System.out.println(fruits); // apple; banana; orange
- 字符串替换与截断
- Java
- 深色版本
- 1System.out.println(StrUtil.replaceAll("Hello World", "l", "L")); // HeLLo WorLd 2System.out.println(StrUtil.truncateByByteLength("こんにちは世界", 10)); // こん
总结
StrUtil工具类通过封装一系列常用的字符串操作方法,极大地方便了我们在Java开发中对字符串的处理。从简单的空值检查、大小写转换,到复杂的字符串分割、拼接、替换和截断,StrUtil提供了全面而便捷的解决方案。使用这个工具类,不仅可以简化代码,提高开发效率,还能确保字符串操作的正确性和一致性,从而提升项目的整体质量。在实际项目中,根据具体需求灵活运用StrUtil提供的方法,可以让你的代码更加优雅、高效。
猜你喜欢
- 2024-10-06 java基础教程之字符串的介绍,比较重要的一个知识点。
- 2024-10-06 10分钟入门Shell脚本编程(shell脚本编程工具)
- 2024-10-06 Java学习:字符串概述与特点(java中的字符串的实例方式有几种)
- 2024-10-06 Java,字符串处理,String、StringBuffer和StringBuilder
- 2024-10-06 使用JavaCV实现读取视频信息及自动截取封面图
- 2024-10-06 如何优雅地进行Java字符串转义?面试官:format都玩不溜,再说吧
- 2024-10-06 java string 深入解析(java string方法详解)
- 2024-10-06 Java截取新闻标题(java如何截取一段字符串)
- 2024-10-06 多学习才能多赚钱之:java取字符串前几位字符
- 2024-10-06 Java入门教程-字符串(java字符串操作常用方法有哪些)
你 发表评论:
欢迎- 最近发表
-
- 你真的会用 Java 中的线程池吗?多个企业级线程池工具类封装实践
- 线程池的实现原理、优点与风险、以及四种线程池实现
- Java线程池ThreadPoolExecutor实现原理剖析
- 深入分析线程池的实现原理(线程池是干嘛的)
- 一文搞懂JAVA线程池工作原理(java线程池的工作流程)
- Java线程池的工作原理(java线程池的实现原理)
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)