让骆驼在骆驼案件转换中感到高兴

时间:2013-10-09 08:05:25

标签: javascript regex

我已经编写了驼峰套管字符串的功能(要求是在单词的开头和每个连字符之后启动字符,这是针对个人姓名的。)

function sadCamelize(input) {
  return input.toLowerCase().replace(/([-\s])(.)/g,
    function(match, separator, starter) {
      return separator + starter.toUpperCase();
  });
}

现在,我想让我的骆驼开心,这样即使是弦乐的第一个字符(不是空格也不是连字符),都会被踢出去。 Id est,而不是:

  

HONKA-HONKA - >洪卡-洪卡

我想得到

  

HONKA-HONKA - >洪卡-洪卡

目前我被困住了,可能是因为烦恼。所有的骆驼都是沮丧的,所以我也是。而且 - 我称之为悲伤/快乐的骆驼(低头/向上)的正确命名是什么?

3 个答案:

答案 0 :(得分:7)

function happyCamelize(str) {
    return str.replace(/([a-z])([a-z]+)/gi, function(_, $1, $2) {
        // _: The entire matched string. not used here.
        // $1: The first group. The first alphabet.
        // $2: The second group. The rest alphabets.
        return $1.toUpperCase() + $2.toLowerCase();
    });
}

示例:

happyCamelize('HONKA-HONKA') // "Honka-Honka"

注意此代码不会更改单个字长。

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

如果您还希望使用单长字,请使用/([a-z])([a-z]*)/gi

答案 1 :(得分:4)

这个丑陋的衬垫可以完成这项任务。

"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('');
}

以下是行动顺序:

  • 将所有内容转换为小写
  • 按字词(\b)分割
  • 映射正则表达式结果的每个部分,以便第一个字母变为 大写
  • word.slice(1)从数组中删除第一个元素

答案 2 :(得分:2)

你的问题的第一部分已由下面的lukas回答,所以我将回答第二部分。

  

honkaHonka = camelCase

     

HonkaHonka = PascalCase

还有其他变体和同义词。见这里:http://en.wikipedia.org/wiki/CamelCase#Variations_and_synonyms