2017-04-01 110 views
-2

我是Javascript的全新用例,並試圖找出如何使用for循環來駱駝式地處理任何字符串。這是我迄今爲止所擁有的。在Javascript中使用for循環創建駝峯函數

function camelCase(str) { 
var splitStr = ""; 
var result = ""; 

splitStr = str.split(" "); 
for(var i = 0; i < splitStr.length; i++){ 
result += splitStr[i][0].toUpperCase() + 
    splitStr[i].slice(1); 
    } 
    return result; 
} 

console.log(camelCase("hello there people")); 

返回「HelloTherePeople」 - 你怎麼我做splitStr(splitStr [0] [0])從toUpperCase排除的第一個指標,但仍包含在字符串的開始?

+0

開始的循環之前,您將不得不檢查splitStr的長度,即使它工作,也不會「駱駝大小寫」。只有具有空格的字符串 –

+0

如果您想讓CamelCase不含空格,您將需要字典! – mfahadi

+0

您進行轉換,然後將第一個字符轉回小寫。 – Arijoon

回答

0

變回像這樣:

return result[0].toLowerCase()+result.substr(1); 
1

你是什麼分隔符?這個方法假設一個下劃線_。如果您想要空間,請將其更改爲空格。或者讓它成爲一個可以傳遞給camelize的變量。

if(!String.prototype.camelize) 
    String.prototype.camelize = function(){ 
     return this.replace(/_+(.)?/g, function(match, chr) { 
      return chr ? chr.toUpperCase() : ''; 
     }); 
    } 

"a_new_string".camelize() 
//"aNewString" 

正則表達式/_+(.)?/g/說,發現1個或多個_字符後跟任意字符.,則(.)創建一個捕獲組,所以你能得到一個字符。它作爲第二參數chr傳遞給函數。 ?意味着不貪婪,所以它會在下一個_停止。 g意味着全球,幾乎意味着找到所有匹配。

String.prototype.replacereference

0

你可以做一個檢查循環內看到,如果你是第一指標。

function camelCase(str) { 
 
    //splitStr will be an array 
 
    var splitStr = []; 
 
    var result = ""; 
 
    
 
    splitStr = str.split(" "); 
 
    
 
    //Capitalize first letter of words starting from the second one 
 
    for(var i = 0; i < splitStr.length; i++){ 
 
    
 
    //first word 
 
    if (i===0) { 
 
     //Good practice to lowercase the first letter regardless of input 
 
     result += splitStr[i][0].toLowerCase() + splitStr[i].slice(1); 
 
    } 
 
    
 
    else { 
 
     //rest can proceed as before 
 
     result += splitStr[i][0].toUpperCase() + 
 
     splitStr[i].slice(1);  
 
    } 
 

 
    } 
 
    
 
    
 
    return result; 
 
    } 
 

 
console.log(camelCase("hello there people"));

可替代地,環可以甚至開始在第二索引。但是,在運行從第二個索引