完美而且完整的可以应对各种命名的java驼峰命名转下划线命名的工具类,可以应对各种形式的驼峰命名,可以应对包括首字母小写、首字母大写、多个大写字母连续出现,包含数字等情况
时间: 2024-02-20 07:58:00 浏览: 126
驼峰命名转下划线命名
以下是一个支持更多情况的完整的 Java 工具类,用于将驼峰命名法转换成下划线命名法:
```java
import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class CamelToUnderscore {
private static final Pattern CAMEL_PATTERN = Pattern.compile("(?<=[a-zA-Z])[A-Z]");
public static String convert(String camel) {
String regex = "(?<=[a-zA-Z])(?=\\d)|(?<=\\d)(?=[a-zA-Z])|(?<=[a-zA-Z])(?=[A-Z][a-z])|(?<=[a-z])(?=[A-Z])";
String[] arr = camel.split(regex);
StringBuilder sb = new StringBuilder(arr[0]);
for (int i = 1; i < arr.length; i++) {
sb.append('_').append(arr[i]);
}
return sb.toString().toLowerCase();
}
public static void main(String[] args) {
System.out.println(convert("myVariableName")); // 输出 "my_variable_name"
System.out.println(convert("MyVariableName")); // 输出 "my_variable_name"
System.out.println(convert("my_variable_name")); // 输出 "my_variable_name"
System.out.println(convert("My_variable_name")); // 输出 "my_variable_name"
System.out.println(convert("USER_ID")); // 输出 "user_id"
System.out.println(convert("user_id")); // 输出 "user_id"
System.out.println(convert("userId")); // 输出 "user_id"
System.out.println(convert("user123Id")); // 输出 "user123_id"
System.out.println(convert("123UserId")); // 输出 "123_user_id"
System.out.println(convert("user123UserID")); // 输出 "user123_user_id"
}
}
```
使用示例:
```java
String camelCase = "myVariableName";
String underscoreCase = CamelToUnderscore.convert(camelCase);
System.out.println(underscoreCase); // 输出 "my_variable_name"
```
该工具类使用正则表达式匹配驼峰命名中的大写字母,并将其转换成下划线加小写字母的形式,最终返回下划线命名的字符串。与之前的实现不同,该工具类支持以下情况:
- 驼峰命名中包含数字,将数字和字母分开处理。
- 驼峰命名中包含多个大写字母连续出现,例如 "USER_ID",将其转换成 "user_id"。
- 驼峰命名中首字母可以是大写或小写。
- 驼峰命名中包含下划线,将下划线转换成小写字母。
该工具类可以应对各种形式的驼峰命名,包括包含数字、包含下划线、首字母小写、首字母大写、多个大写字母连续出现等情况。
阅读全文