2016-07-28 102 views
0

我发现了一个将ENUM转换为camelCase的解决方案,但它并不优雅。将枚举(作为字符串)从CAPS_CASE转换为camelCase

var underscoreToCamelCase = function(str) { 
    str = (str === undefined || str === null) ? '' : str; 
    str = str.replace(/_/g, " ").toLowerCase(); 
    return str.replace(/(?:^\w|[A-Z]|\b\w|\s+)/g, function(match, index) { 
     if (+match === 0) return ""; 
     return index == 0 ? match.toLowerCase() : match.toUpperCase(); 
    }); 
} 

所以,如果str是MY_ENUM_STRING它将返回myEnumString。

必须有一种方法来实现这与一个单一的正则表达式匹配?

+0

难道是一个问题提到的语言枚举你解析?多种语言都有,你知道吗? –

+0

它是从基于Java的宁静服务返回为json。决定角度前端将处理转换为骆驼案件,这是要显示的数据的要求。 –

+0

看,你不是一个新用户。你为什么不把这个信息与样本数据一起包含在内?你为什么期望人们猜测具体的格式? –

回答

3

试试这个:

var underscoreToCamelCase = function(str) { 

    return str.toLowerCase() 
    .replace(/_+(\w|$)/g, function ($$, $1) { 
     return $1.toUpperCase(); 
    }); 

} 
+0

为什么要将字符串大写结尾? –

+0

CD .. - 完美的作品,只有一半的代码。谢谢! –

+1

在这种情况下,请接受此答案,以标记您的问题已解决:)谢谢。 @MatthewTrow –