如何将camelcase转换成蛇案?

Bad*_*rul 1 javascript typescript

我想使用TypeScripts将一个在camel case中的字符串转换为snake case.示例:itemNameto item_name,unitPricetoUnit_Price

Ell*_*iot 12

你可以这样做:

function camelToUnderscore(key) {
   var result = key.replace( /([A-Z])/g, " $1" );
   return result.split(' ').join('_').toLowerCase();
}

console.log(camelToUnderscore('itemName'));
Run Code Online (Sandbox Code Playgroud)

  • @abasar 你的稍微修改过的版本有什么优点? (4认同)

Mar*_*ahn 7

const camelToSnakeCase = str => str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
Run Code Online (Sandbox Code Playgroud)

  • @Badrul 然而,这更像是 PascalCase (13认同)
  • 我的变体可以很好地处理第一个大写字母: ```text.split(/(?=[AZ])/).join('_').toLowerCase()``` (7认同)
  • ItemName => item_name: ```const camel_to_snake = str => str[0].toLowerCase() + str.slice(1, str.length).replace(/[AZ]/g, letter => `_${ letter.toLowerCase()}`);``` (6认同)
  • 当我使用上骆驼套到蛇套时,它不起作用。`ItemName`=`_item_name` (3认同)
  • 此版本也适用于大驼峰式大小写 ```str.replace(/[AZ]/g, (letter, index) => { return index == 0 ? letter.toLowerCase() : '_'+ letter. toLowerCase();});``` (3认同)

Ama*_*ats 5

尝试这个:

function toSnakeCase(inputString) {
    return inputString.split('').map((character) => {
        if (character == character.toUpperCase()) {
            return '_' + character.toLowerCase();
        } else {
            return character;
        }
    })
    .join('');
}
// x = item_name
Run Code Online (Sandbox Code Playgroud)