2016-07-28 126 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 –