2012-04-18 8 views

答えて

3
$('a').click(function() { 
    var str = $(this).data('test'); // get the concated string 
    var arr = str.split(""); // Convert the string to array 
    for (var i = arr.length - 1; i >= 0; i--) { // iterate over the characters 
     if (arr[i].match(/[A-Z]/)) // if the char is uppercase 
      arr.splice(i, 0, " "); // add a space before it 
    } 

    arr[0] = arr[0].toUpperCase(); // upper the first char. 
    var splitedString = arr.join(""); // convert the array to string 
    alert(splitedString); // alert the string. 
});​ 

LIVE DEMO

2

何か?

$('a').click(function(){ 
    var input = $(this).data('test'), 
     output = input.slice(0, 1).toUpperCase() + input.slice(1).replace(/[A-Z][a-z]/, ' $&'); 
    alert(output); 
});​ 

きちんとした文字列にキャメル・ケースを変換するための一般的な機能を記述した方がよいかもしれませんが、ここでは作業上の例のデモがあります:http://jsfiddle.net/rjzaworski/mFbHK/

+0

正規表現の代わりに '$&'を使用することで、不要なグループ分けを取り除くことができます。また、(元々は不適切だったが)この回答は "rocketsByACME"を "Rockets By A C M E"に変えるだろう。 – Phrogz

1

がここに短いのですが、 、簡易版:また

$('a').click(function(){ 
    var t = $(this).data('test'); 
    alert(t.replace(/^[a-z]|[a-z][A-Z]/g, function(s){ 
    return s.length==1 ? s.toUpperCase() : s.replace(/^./,'$& '); 
    }); 
}); 

、より多くの再利用可能な機能も自己文書にあなたの意思包ま:

$('a').click(function(){ 
    alert(deCamel($(this).data('test'))); 
}); 

function deCamel(str){ 
    return str.replace(/^[a-z]|[a-z][A-Z]/g, function(s){ 
    return s.length==1 ? s.toUpperCase() : s.replace(/^./,'$& '); 
    }); 
}