Javascript JS中的字符串修改问题

Javascript JS中的字符串修改问题,javascript,jquery,Javascript,Jquery,我有一个类似“单词计数”的字符串。如何使用JavaScript以优雅的方式将其转换为“WordCount”?我的决定对我来说太复杂了。我将非常感谢你的帮助 看一看。我不想把所有东西都复制粘贴到这里,但它似乎正是你想要的 以下是为满足您的要求而修改的功能: String.prototype.toCamel = function(){ return this.replace(/((^|\_)[a-z])/g, function($1){ return $1.t

我有一个类似“单词计数”的字符串。如何使用JavaScript以优雅的方式将其转换为“WordCount”?我的决定对我来说太复杂了。我将非常感谢你的帮助

看一看。我不想把所有东西都复制粘贴到这里,但它似乎正是你想要的

以下是为满足您的要求而修改的功能:

String.prototype.toCamel = function(){
    return this.replace(/((^|\_)[a-z])/g, function($1){
                return $1.toUpperCase().replace('_','');});
};
它正在发挥作用

很简单,就像这样:

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();
var string=“word_count”.split(“”);

对于(var i=0;i,可以使用如下函数:

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'
var result = '';
$.each('word_count'.split('_'), function(idx,elem){
  result = result + elem.substr(0,1).toUpperCase() + elem.substr(1);
});
var Pascalize=函数(字){
var x=单词;
结果='';
if(-1!=word.indexOf(“”){
x=单词分割(“"”);

对于(var i=0;i,可以使用正则表达式匹配字符串开头的字母或下划线后面的字母,并使用回调将字母转换为大写:

s = s.replace(/(?:^|_)([a-z])/g, function(m, g){
  return g.toUpperCase();
});

演示:

使用jQuery,您可以执行以下操作:

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'
var result = '';
$.each('word_count'.split('_'), function(idx,elem){
  result = result + elem.substr(0,1).toUpperCase() + elem.substr(1);
});
新版本(适用于任何数量的
):

压缩格式:

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(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
我已经看了所有的答案,没有一个完全符合我的要求。我想要一个幂等函数,转换成camelCase(而不是PascalCase),我喜欢字符串原型扩展方法(尽管很明显这并不总是最好的药)

总之,我的结局是:

String.prototype.camelize = function(){
    var pascalCase = this.replace(/((^|\_)[a-z])/g, function($1){
        return $1.toUpperCase().replace('_','');
    });
    return pascalCase.charAt(0).toLowerCase() + this.slice(1);
};

我觉得我的决定太复杂了。
你能和我们分享一下吗?也许它可以改进。它与我在回复中使用的我创建的函数类似,可能会提供你想要的信息。它对我非常有效。注意,这不会用大写字母替换第一个字符。注意,驼峰大小写是
wordCount
,而不是op想要的
wordCount
。如果你真的能选择/复制文本,这会更好。文字图片是我最讨厌的地方。@CoreyOgburn我只是在博客帖子中显示op的位置。他们是来这里寻找答案的。这里。字符串是不变的-
toUpperCase
不会改变
string[i]
。他在找标题大小写,而不是驼峰大小写。@pmvdb:好的,我已经编辑过了。Anthony Mills,是标题大小写,但我将函数命名为错误的——编辑为正确。函数式编程FTW!:)您也可以使用由于组而传递的参数:。@pimvdb:是的,这有点简洁。:)
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)}};
String.prototype.camelize = function(){
    var pascalCase = this.replace(/((^|\_)[a-z])/g, function($1){
        return $1.toUpperCase().replace('_','');
    });
    return pascalCase.charAt(0).toLowerCase() + this.slice(1);
};