我最初把它分开了,它是一个很长的函数,取三个不同的单词,将第一个字母大写,然后将它们存储在一个新的变量中,连接起来。
相反,我试图找到一个解决方案,其中此代码可以最小化,并且不必具有用于连接的另一个函数,另一个用于大写等。
你会怎么做?这三个字符串是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,然后大写并连接。
答案 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');