「Light Purple」と「DarkRed」として保存されている「Light Purple」と「Dark Red」のような単語があります。「LightPurple」などの単語の大文字を確認し、「Light」と「Purple」の間にスペースを入れて「Light Purple」という単語を作成するにはどうすればよいですか。
助けてくれてありがとう
「Light Purple」と「DarkRed」として保存されている「Light Purple」と「Dark Red」のような単語があります。「LightPurple」などの単語の大文字を確認し、「Light」と「Purple」の間にスペースを入れて「Light Purple」という単語を作成するにはどうすればよいですか。
助けてくれてありがとう
You can use a regex to add a space wherever there is a lowercase letter next to an uppercase one.
Something like this:
"LightPurple".replace(/([a-z])([A-Z])/, '$1 $2')
UPDATE: If you have more than 2 words, then you'll need to use the g flag, to match them all.
"LightPurpleCar".replace(/([a-z])([A-Z])/g, '$1 $2')
UPDATE 2: If are trying to split words like CSVFile, then you might need to use this regex instead:
"CSVFilesAreCool".replace(/([a-zA-Z])([A-Z])([a-z])/g, '$1 $2$3')
    さて、私の経験を共有します。私はこの実装を他のいくつかの言語でも持っていますが、それはうまく機能します。あなたのために、例を使用してJavaScriptバージョンを作成したので、これを試してください:
var camelCase = "LightPurple";
var tmp = camelCase[0];
for (i = 1; i < camelCase.length; i++)
{
    var hasNextCap = false;
    var hasPrevCap = false;
    var charValue = camelCase.charCodeAt(i);
    if (charValue > 64 && charValue < 91)
    {
        if (camelCase.length > i + 1)
        {
            var next_charValue = camelCase.charCodeAt(i + 1);
            if (next_charValue > 64 && next_charValue < 91)
                hasNextCap = true;
        }
        if (i - 1 > -1)
        {
            var prev_charValue =  camelCase.charCodeAt(i - 1);
            if (prev_charValue > 64 && prev_charValue < 91)
                hasPrevCap = true;
        }
        if (i < camelCase.length-1 &&
            (!(hasNextCap && hasPrevCap || hasPrevCap)
            || (hasPrevCap && !hasNextCap)))
            tmp += " ";
    }
    tmp += camelCase[i];
}
これがデモです。
各文字を大文字の文字列と比較できます。
function splitAtUpperCase(input){  
   var uppers = "ABCDEFGHIJKLMNOPQRSTUVWXYZ";  
   //start at 1 because 0 is always uppercase
   for (var i=1; i<input.length; i++){
      if (uppers.indexOf(input.charAt(i)) != -1){
         //the uppercase letter is at i
         return [input.substring(0,i),input.substring(i,input.length)];
      }
   }
}
出力は、最初と 2 番目の単語を含む配列です。