驼峰命名法七十二变:字节面试官的字符串魔术课
作为数据工程师,命名规范就像给变量穿衣服——既要保暖(表意清晰)又要时尚(格式规范)。今天我们来破解字节跳动高频面试题:驼峰命名转换的三种姿势!
一、题目解析
需求:实现双向驼峰命名转换器
- 下划线/短横线转小驼峰:
user_name
→userName
- 下划线/短横线转大驼峰:
user-name
→UserName
- 驼峰转下划线:
userName
→user_name
特殊处理:
- 连续分隔符视为单个(
a__b
→aB
) - 首字符处理(
_name
→name
) - 数字处理(
user2_id
→userId
)
二、Java的三种解法
方法1:字符流手术刀(时间复杂度O(n))
public class CamelConverter {
// 驼峰转下划线
public static String camelToUnderline(String str) {
if (str == null) return "";
StringBuilder sb = new StringBuilder();
for (char c : str.toCharArray()) {
if (Character.isUpperCase(c)) {
sb.append('_').append(Character.toLowerCase(c));
} else {
sb.append(c);
}
}
return sb.charAt(0) == '_' ? sb.substring(1) : sb.toString();
}
// 下划线/短横线转驼峰
public static String toCamelCase(String str, boolean isBigCamel) {
if (str == null) return "";
StringBuilder sb = new StringBuilder(