「word_count」のような文字列があります。JavaScriptを使用してエレガントな方法で「WordCount」に変換するにはどうすればよいですか? 私の決定は私には複雑すぎるようです。大変お世話になりました。
質問する
188 次
10 に答える
7
function titleCase(str)
{
return str.split("_")
.map(function (s) { return s.charAt(0).toUpperCase() + s.slice(1); })
.join("");
}
于 2012-07-12T17:57:37.387 に答える
3
正規表現を使用して、文字列の先頭の文字またはアンダースコアの後の文字のいずれかに一致させ、コールバックを使用して文字を大文字に変換できます。
s = s.replace(/(?:^|_)([a-z])/g, function(m, g){
return g.toUpperCase();
});
デモ: http: //jsfiddle.net/Guffa/ByU6P/
于 2012-07-12T17:59:37.213 に答える
2
次のように簡単です。
var string = "word_count".split("_");
for(var i = 0; i<string.length;i++) {
string[i] = string[i].charAt(0).toUpperCase() + string[i].substr(1);
}
var myNiceString = string.join();
これを String オブジェクトに追加する場合は、次のようにします。
String.prototype.titleCase = function() {
var split = this.split("_");
for(var i = 0; i<split.length;i++) {
split[i] = split[i].charAt(0).toUpperCase() + split[i].substr(1);
}
return split.join("");
}
あなたはそれを次のように呼ぶでしょう"word_count".titleCase();
于 2012-07-12T17:52:50.833 に答える
1
次のような関数を使用できます。
var Pascalize = function(word) {
var x = word;
result = '';
if(-1 != word.indexOf('_')) {
x = word.split('_');
for(var i=0;i<x.length;i++) {
result += x[i].substr(0, 1).toUpperCase() + x[i].substr(1);
}
}
if('' == result) { result = word; }
return result;
};
var PascalCaseString = Pascalize("this_is_a_test");
// PascalCaseString value is now 'ThisIsATest'
于 2012-07-12T17:55:47.963 に答える
0
jQueryを使用すると、次のことができます。
var result = '';
$.each('word_count'.split('_'), function(idx,elem){
result = result + elem.substr(0,1).toUpperCase() + elem.substr(1);
});
于 2012-07-12T18:02:44.980 に答える
0
新しいバージョン (任意の量で動作します_
):
function fixString(sString) {
var aWords = sString.split("_"),
sResults = "";
for (var i in aWords)
sResults += aWords[i].charAt(0).toUpperCase() + aWords[i].slice(1);
return sResults;
}
圧縮形式:
function fixString(c){var d=c.split("_"),a="";for(var b in d){a+=d[b].charAt(0).toUpperCase()+d[b].slice(1)}return a};
年:
function fixString(sString) {
return sString.replace(/(.*)_(.*)/, function(sWhole, $1, $2, sWTF) {
return ucfirst($1) + ucfirst($2);
} )
function ucfirst (str) {
str += '';
var f = str.charAt(0).toUpperCase();
return f + str.substr(1);
}
}
... または圧縮バージョン:
function fixString(b){return b.replace(/(.*)_(.*)/,function(e,c,f,d){return a(c)+a(f)});function a(d){d+="";var c=d.charAt(0).toUpperCase();return c+d.substr(1)}};
もちろん、これはfixString("word_count")
あなたのような結果になるように使用されますWordCount
。
于 2012-07-12T18:13:19.043 に答える
0
var str = "word_count";
var re = /\b(.)([^_]+)_(.)/;
var newWord = str.replace(re, function(m,f,t,l){ return f.toUpperCase() + t + l.toUpperCase();})
console.log(newWord);
于 2012-07-12T17:56:23.687 に答える
-1
var aStringLike = "word_count";
// magic follows
aStringLike = "WordCount";
于 2012-07-12T17:54:07.090 に答える