import java.util.regex.Matcher;
import java.util.regex.Pattern;
public class StringTool {
private static Pattern UNDER_LINE_PATTERN = Pattern.compile("_(\\w)");
private static Pattern HUMP__PATTERN = Pattern.compile("[A-Z]");
private static String UNDER_LINE = "_";
/** 下划线转驼峰 */
public static String lineToHump(String str) {
if(!str.contains(StringTool.UNDER_LINE)){
return str;
}
str = str.toLowerCase();
Matcher matcher = UNDER_LINE_PATTERN.matcher(str);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, matcher.group(1).toUpperCase());
}
matcher.appendTail(sb);
return sb.toString();
}
/** 驼峰转下划线(简单写法,效率低于{@link #humpToLineFast(String)}) */
public static String humpToLine(String str) {
return str.replaceAll("[A-Z]", "_$0").toLowerCase();
}
/** 驼峰转下划线,效率比上面高 */
public static String humpToLineFast(String str) {
Matcher matcher = HUMP__PATTERN.matcher(str);
StringBuffer sb = new StringBuffer();
while (matcher.find()) {
matcher.appendReplacement(sb, "_" + matcher.group(0).toLowerCase());
}
matcher.appendTail(sb);
return sb.toString();
}
public static void main(String[] args) {
String lineToHump = lineToHump("yearOnOld");
System.out.println(lineToHump);// fParentNoLeader
System.out.println(humpToLine(lineToHump));// f_parent_no_leader
System.out.println(humpToLineFast(lineToHump));// f_parent_no_leader
}
}
java下划线转驼峰, 驼峰转下划线
最新推荐文章于 2024-09-06 10:45:20 发布
本文介绍了一个Java工具类,展示了如何使用正则表达式实现字符串的驼峰式和下划线式之间的转换,包括lineToHump方法、humpToLine和humpToLineFast方法,以及在main方法中提供的实际用例。
摘要由CSDN通过智能技术生成