#!/bin/bash
# 定义一个函数,将驼峰命名转换为下划线命名
convert_camel_to_snake() {
local camel_case=$1
local snake_case
# 将整个字符串中的连续大写字母(第一段)转为小写
snake_case=$(echo "$camel_case" | sed -r 's/^([A-Z]+)([A-Z][a-z])/\L\1\2/')
# 处理驼峰命名中的大写字母,将大写字母替换为下划线加小写字母
snake_case=$(echo "$snake_case" | sed -r 's/([a-z0-9])([A-Z])/\1_\L\2/g')
# 处理连续大写字母的情况,确保所有大写字母都转为小写
snake_case=$(echo "$snake_case" | sed -r 's/([A-Z]+)/\L\1/g')
echo "$snake_case"
}
# 示例变量
camel_case_variable="projMainRoleGUID"
camel_case_variable2="ExampleVariableName"
camel_case_variable3="HTTPResponseCode"
camel_case_variable4="XMLHttpRequest"
camel_case_variable5="APIGatewayEndpoint"
camel_case_variable6="JSON"
snake_case_variable=$(convert_camel_to_snake "$camel_case_variable")
snake_case_variable2=$(convert_camel_to_snake "$camel_case_variable2")
snake_case_variable3=$(convert_camel_to_snake "$camel_case_variable3")
snake_case_variable4=$(convert_camel_to_snake "$camel_case_variable4")
snake_case_variable5=$(convert_camel_to_snake "$camel_case_variable5")
snake_case_variable6=$(convert_camel_to_snake "$camel_case_variable6")
echo "CamelCase: $camel_case_variable -> Snake_case: $snake_case_variable"
echo "CamelCase: $camel_case_variable2 -> Snake_case: $snake_case_variable2"
echo "CamelCase: $camel_case_variable3 -> Snake_case: $snake_case_variable3"
echo "CamelCase: $camel_case_variable4 -> Snake_case: $snake_case_variable4"
echo "CamelCase: $camel_case_variable5 -> Snake_case: $snake_case_variable5"
echo "CamelCase: $camel_case_variable6 -> Snake_case: $snake_case_variable6"