2017-04-01 15 views
-2

私はJavascriptの新機能で、forループを使用してどのように文字列をキャラルケースにするかを調べようとしています。これはこれまで私が持っていたものです。Javascriptでforループを使用してcamel-case関数を作成する

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つの以上_の文字を見つけると言い、(.)は、キャプチャグループを作成しますので、あなたはその1つの文字を取得することができます。それは第2のパラメータとして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"));

あるいは、ループはさらに第2のインデックスに開始することができます。ただし、第2のインデックス

関連する問題