【问题标题】:How to convert camelcase to snake case in Javascript? [closed]如何在 Javascript 中将骆驼大小写为蛇大小写? [关闭]
【发布时间】:2019-06-12 06:37:21
【问题描述】:

我想使用 TypeScript 将骆驼大小写的字符串转换为蛇大小写。

请记住,“蛇形大小写”是指将每个空格替换为下划线 (_) 字符且每个单词的首字母以小写形式书写的格式样式。

示例:fieldNamefield_name 应该是有效的转换,但 FieldNameField_Name 是无效的。

【问题讨论】:

  • 你试过什么?我会使用正则表达式以大写字母开头。
  • Java 之于 Javascript 就像 Pain 之于绘画,或者 Ham 之于仓鼠。它们完全不同。强烈建议有抱负的程序员尝试学习他们尝试编写代码的语言的名称。当您发布问题时,请适当地标记它。

标签: javascript json


【解决方案1】:

试试这个:

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

【讨论】:

  • 你需要重新加入阵列
  • @MarkKahn 忘记了 - 谢谢!
  • 谢谢!这非常有帮助。对我来说,我还添加了一项检查,以确保新字符串不会以下划线开头,方法是将您的 '_' 替换为 (index != 0 ? '_': '') 并将索引作为参数添加到映射函数 ...map((character, index) => {...
  • 我还使用stackoverflow.com/a/55521416 的答案在此函数中添加了对字母字符的检查,以便数字和符号(将它们设为大写后是相同的字符)不会导致此函数当传入snake_case字符串时,只需将下划线的数量加倍。但是,这也有将输入限制为仅硬编码字符集的缺陷
【解决方案2】:

你可以这样做:

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

console.log(camelToUnderscore('itemName'));

【讨论】:

  • 代码稍作修改:var result = (value .replace(/[^A-Za-z0-9_]/g, '') .replace(/([AZ ]+)/g, "$1") .replace(/\s+/g, ' ') .trim() .toLowerCase() .replace(/\s/g, '')); if (/^\d/.test(result)) { result = "x" + result; }
【解决方案3】:
const camelToSnakeCase = str => str.replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);

【讨论】:

  • 当我使用 Upper camel case 到蛇形案例时,它不起作用。 ItemName=_item_name
  • @Badrul - 是的,它会的。尝试修复它,如果遇到困难,请发布
  • @Badrul 然而这更像是 PascalCase
  • ItemName => item_name: const camel_to_snake = str => str[0].toLowerCase() + str.slice(1, str.length).replace(/[A-Z]/g, letter => `_${letter.toLowerCase()}`);
  • 这个版本也适用于骆驼大写str.replace(/[A-Z]/g, (letter, index) => { return index == 0 ? letter.toLowerCase() : '_'+ letter.toLowerCase();});
猜你喜欢
  • 2014-10-30
  • 1970-01-01
  • 2010-12-03
  • 2016-10-28
  • 1970-01-01
  • 1970-01-01
  • 2018-10-17
  • 2013-11-03
  • 2013-07-16
相关资源
最近更新 更多