jQuery或PHP大写字符串并在一个函数中连接

时间:2014-03-24 21:40:49

标签: javascript php jquery variables

我最初把它分开了,它是一个很长的函数,取三个不同的单词,将第一个字母大写,然后将它们存储在一个新的变量中,连接起来。

相反,我试图找到一个解决方案,其中此代码可以最小化,并且不必具有用于连接的另一个函数,另一个用于大写等。

你会怎么做?这三个字符串是wordChoiceOnce, wordChoiceTwo and wordChoiceThree

所以我真的需要这个(伪代码):

function saveUsername(wordChoiceOnce, wordChoiceTwo, wordChoiceThree){
     // capitalise first letter of all words
     // concatenate all words together in order
     //store words in var username;
}
编辑:在我存储了这个var之后,我计划立即将它传递给PHP变量。那么也许更容易提供PHP解决方案呢?并将每个单词传递给PHP,然后大写并连接。

6 个答案:

答案 0 :(得分:0)

PHP有ucwords,javascript已经ported。所以,这个众所周知的函数让我们得到这样的东西:

function saveUsername(wordChoiceOnce, wordChoiceTwo, wordChoiceThree){
    function ucwords(str) {
      //  discuss at: http://phpjs.org/functions/ucwords/
      // original by: Jonas Raoni Soares Silva (http://www.jsfromhell.com)
      // improved by: Waldo Malqui Silva
      // improved by: Robin
      // improved by: Kevin van Zonneveld (http://kevin.vanzonneveld.net)
      // bugfixed by: Onno Marsman
      //    input by: James (http://www.james-bell.co.uk/)
      //   example 1: ucwords('kevin van  zonneveld');
      //   returns 1: 'Kevin Van  Zonneveld'
      //   example 2: ucwords('HELLO WORLD');
      //   returns 2: 'HELLO WORLD'

      return (str + '')
        .replace(/^([a-z\u00E0-\u00FC])|\s+([a-z\u00E0-\u00FC])/g, function($1) {
          return $1.toUpperCase();
        });
    }

    return ucwords(wordChoice1) + ' ' + ucwords(wordChoiceTwo) + ' ' + ucwords(wordChoiceThree);
}

答案 1 :(得分:0)

function saveUsername(wordChoiceOnce, wordChoiceTwo, wordChoiceThree){

var res = capitaliseFirstLetter(wordChoiceOnce) + capitaliseFirstLetter(wordChoiceTwo) + capitaliseFirstLetter(wordChoiceThree);

} 

使用此功能:

function capitaliseFirstLetter(str)
{
    return str.toString().charAt(0).toUpperCase() + str.toString().slice(1);
}

答案 2 :(得分:0)

上面的两个例子都错过了小写字符串的其余部分。

以下是一个例子:

function saveUsername(wordChoiceOnce, wordChoiceTwo, wordChoiceThree)
{
    var username = capitalize(wordChoiceOnce) + capitalize(wordChoiceTwo) + capitalize(wordChoiceThree);

    alert(username);
}

function capitalize(word)
{
    return word.charAt(0).toUpperCase() + word.substring(1).toLowerCase();
}

saveUsername('john', 'SMITH', 'DoeSon');

答案 3 :(得分:0)

为什么不提供包含任意长度字符串的可扩展解决方案?

function saveUsername(wordArray){
    var str = '';

    for(var i = 0, len = wordArray.length; i < len; i++){
        str += wordArray[i].charAt(0).toUpperCase() + wordArray[i].substring(1).toLowerCase();

        if(i < (len-1)){
            str += ' ';
        } else {
            return str;
        }
    }
}

然后这样称呼:

saveUsername([wordChoiceOne,wordChoiceTwo,wordChoiceThree]);

答案 4 :(得分:0)

注意:我的解决方案是使用JavaScript,因此不太理想。

我建议使用单独的函数来大写第一个字母;但是,如果您希望在单个函数中完成此操作,则可以使用:

function saveUsername () {
    var arr = [],
        i   = arguments.length,
        word, username;
    while (i--) {
        word = arguments[i];
        arr.unshift( word.charAt(0).toUpperCase(), word.substr(1) );
    }
    username = arr.join('');
}

saveUsername( 'one', 'two', 'three' );

此方法适用于任意数量的参数。

答案 5 :(得分:0)

首先,你必须在字符串原型上创建一个大写方法。

然后你可以通过一些操作来从你的参数中获取字符串,将它们大写,然后加入它们。

String.prototype.capitalize = function() {
    return this.replace(/(?:^|\s)\S/g, function(a) { return a.toUpperCase(); });
};

function saveUserName(a,b,c) { 
    var argArray = [];

    for (item in arguments) {
        argArray.push(arguments[item].toLowerCase().capitalize());
    }

    var joined = argArray.join('');
    alert(joined);
} 

saveUserName('frank', 'jim', 'jen');