如何大写字符串

时间:2015-08-21 21:57:12

标签: javascript string

我仍然是JavaScript的新手,我遇到了将数组中第一个字符串变为大写的问题。

我已经达到了这样的程度,即我已经获得了所有发短信的小写,逐个字符地反转了文本,并将其变成了一个字符串。我现在需要将字符串中的第一个字母大写为大写。

function yay () {
  var input = "Party like its 2015";

  return input.toLowerCase().split("").reverse().join("").split(" ");
  for(var i = 1 ; i < input.length ; i++){
    input[i] = input[i].charAt(0).toUpperCase() + input[i].substr(1);
  }   
}

console.log(yay());

我需要输出“partY likE itS 2015”

7 个答案:

答案 0 :(得分:3)

您在没有透露所需结果的情况下发布了您的初始问题,感到很沮丧。由此引发了很多混乱。现在,期望的结果终于明确了 - 这是一个答案。

你可以小写整个事物,然后分成单词,通过在字中加上最后一个字符来重建数组中的每个单词,然后重新加入数组:

function endCaseWords(input) {
    return input.toLowerCase().split(" ").map(function(item) {
        return item.slice(0, -1) + item.slice(-1).toUpperCase();
    }).join(" ");
}

document.write(endCaseWords("Party like its 2015"));

这是一步一步的解释:

  1. 小写整个字符串
  2. 使用.split(" ")分割成一个单词数组
  3. 使用.map()迭代数组
  4. 对于每个单词,创建一个新单词,该单词是单词的第一部分,添加到单词中最后一个字符的大写字母
  5. .join(" ")重新组合成一个字符串
  6. 返回结果
  7. 您还可以使用自定义回调替换正则表达式:

    function endCaseWords(input) {
        return input.toLowerCase().replace(/.\b/g, function(match) {
          return match.toUpperCase();
        });
    }
    
    document.write(endCaseWords("Party like its 2015"));

    仅供参考,您的原始代码存在许多问题。最大的错误是,只要你在一个函数中return,就不会执行该函数中的其他代码,因此你的for循环从未执行过。

    然后,真的没有理由需要reverse()字符,因为一旦你分成单词,你就可以访问每个单词中的最后一个字符。

答案 1 :(得分:3)

您需要将其分配给input,而不是返回结果拆分和反转字符串。否则,在执行循环操作之前从函数返回,使单词大写。 然后在for循环后,您应该返回连接的字符串。

此外,由于您在大写之前已经反转了字符串,因此您应该将每个单词的 last 字母大写。然后,您需要在重新加入之前反转数组,以便按原始顺序恢复单词。

&#13;
&#13;
function yay () {
  var input = "Party like its 2015";

  input = input.toLowerCase().split("").reverse().join("").split(" ");
  for(var i = 1 ; i < input.length ; i++){
    var len = input[i].length-1;
    input[i] = input[i].substring(0, len) + input[i].substr(len).toUpperCase();
  }
  return input.reverse().join(" ");
}

alert(yay());
&#13;
&#13;
&#13;

答案 2 :(得分:1)

这就是我要做的事情:

  1. 拆分空格字符上的句子
  2. 使用.map转换结果数组以大写第一个字符并将其余字符大写
  3. 再次将数组加入空格以获取字符串
  4. &#13;
    &#13;
    function yay () {
      var input = "Party like its 2015";
      return input.split(" ").map(function(item) {
        return item.charAt(0).toUpperCase() + item.slice(1).toLowerCase();
      }).join(" ");
    }
    
    console.log(yay());
    &#13;
    &#13;
    &#13;

答案 3 :(得分:1)

您可以使用正则表达式:

input.toLowerCase().replace(/[a-z]\b/g, function (c) { return c.toUpperCase() });

或者,如果您可以使用arrow functions,只需:

input.toLowerCase().replace(/[a-z]\b/g, c => c.toUpperCase())

答案 4 :(得分:0)

一些丑陋但有效的代码:

 var text = "Party like its 2015";
  //partY likE itS 2015
  function yay(input) {

    input = input.split(' ');

    arr = [];

    for (i = 0; i < input.length; i++) {
      new_inp = input[i].charAt(0).toLowerCase() + input[i].substring(1, input[i].length - 1) + input[i].charAt(input[i].length - 1).toUpperCase();
      arr.push(new_inp);
    }

    str = arr.join(' ');
    return str;

  }

  console.log(yay(text));

答案 5 :(得分:0)

尝试使用PHP.js中的ucwords。实际上,这很简单。

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

var input = "Party like its 2015";
input = input.charAt(0).toLowerCase() + input.substr(1);
input = input.split('').reverse().join('').ucwords();
input = input.split('').reverse().join('');

注意:我将其函数修改为String函数,因此方法链接可以正常工作。

答案 6 :(得分:0)



function yay(str)
{
let arr = str.split(' ');
let farr = arr.map((item) =>{
  let x = item.split('');
  let len = x.length-1
  x[len] = x[len].toUpperCase();
  x= x.join('')
  return x;
})
return farr.join(' ')

}


var str = "Party like its 2015";
let output = yay(str);

console.log(output) /// "PartY likE itS 2015"