Javascript 在骆驼案例转换中让骆驼快乐

Javascript 在骆驼案例转换中让骆驼快乐,javascript,regex,Javascript,Regex,我已经编写了驼峰式大小写字符串的函数(要求在单词开头和每个连字符后面踢起字符,这是针对个人姓名的) 现在,我想让我的骆驼高兴,这样即使字符串的第一个字符(不是空格或连字符)也会被踢起。Id est,而不是: 本卡-本卡->本卡-本卡 我想买一个 本卡-本卡->本卡-本卡 现在我被卡住了,可能是因为烦恼。所有的骆驼都是抑郁的,所以我也是。我称之为悲伤/快乐的骆驼(头朝下/朝上)的正确命名法是什么?这个丑陋的一行就可以做到这一点 "HONKA-HONKA".toLowerCase().split(/

我已经编写了驼峰式大小写字符串的函数(要求在单词开头和每个连字符后面踢起字符,这是针对个人姓名的)

现在,我想让我的骆驼高兴,这样即使字符串的第一个字符(不是空格或连字符)也会被踢起。Id est,而不是:

本卡-本卡->本卡-本卡

我想买一个

本卡-本卡->本卡-本卡


现在我被卡住了,可能是因为烦恼。所有的骆驼都是抑郁的,所以我也是。我称之为悲伤/快乐的骆驼(头朝下/朝上)的正确命名法是什么?

这个丑陋的一行就可以做到这一点

"HONKA-HONKA".toLowerCase().split(/\b/g).map(function(word) { return word[0].toUpperCase() + word.slice(1)}).join('')
让我来解释一下:

"HONKA-HONKA".toLowerCase().split(/\b/g).map(function(word) {
  return word[0].toUpperCase() + word.slice(1);
}).join('');
现在包装成一个函数

function sadCamelize(str) {
    return str.toLowerCase().split(/\b/g).map(function(word) {
      return word[0].toUpperCase() + word.slice(1);
    }).join('');
}
以下是操作顺序:

  • 将所有内容转换为小写
  • 一字不差
  • 映射regex结果的每个部分,使第一个字母成为 大写字母
  • slice(1)从数组中删除第一个元素
例如:

happyCamelize('HONKA-HONKA') // "Honka-Honka"
注意此代码不会更改单字长度

happyCamelize('h') // => "h"
happyCamelize('H') // => "H"

如果您还想将单字长度简化,请使用
/([a-z])([a-z]*)/gi
您的问题的第一部分已由卢卡斯在下面回答,因此我将回答第二部分

honkaHonka=camelCase

HonkaHonka=PascalCase


还有其他变体和同义词。请参见此处:

@mplungjan感谢您提供mdn参考资料,不过评论或编辑会更有用。或单峰骆驼案例或UpperCamelCase@mplungjanBumpyCaps或CamelCaps或驼背或InterCaps或WikiCase:我不知道为什么它能工作,但它不应该在大写字符上失败吗?正则表达式如何知道匹配“A-Z”呢?@KonradViltersten,使用
i
标志表示忽略大小写
A-Z
匹配大写字母和小写字母。@falsetru漏掉了“i”。现在我明白了。我开始怀疑黑人巫术(不管怎么说,在大多数情况下,regex感觉像是hihi)。
happyCamelize('HONKA-HONKA') // "Honka-Honka"
happyCamelize('h') // => "h"
happyCamelize('H') // => "H"