计算单词中的大写 javascript

Count the capitals in the word javascript

) 我试图用这个语句解决一个问题:

写一个函数 howManyCaps 来计算单词中的大写字母,然后 returns 一个句子说明哪些字母是大写字母以及总共有多少个大写字母。

这是我的功能

function howManyCaps(str) {
  var count = 0;
  for (i = 0; i < str.length; i++) {
    if (str[i] == str[i].toUpperCase()) {
      console.log(true);
      count++;
    } else {
      false;
    }
  }
  return count;
}

但在控制台中,如果尝试使用类似 str=" How many Caps" 的内容,您会看到值 5 而不是 2。 有什么建议么? 谢谢

如果您可以使用正则表达式,我建议如下:

function howManyCaps(str) {
    return str.length - str.replace(/[A-Z]+/g, "").length;
}

var str = " How many Caps";
console.log("Input has " + howManyCaps(str) + " capital letters.");

想法是将原始输入的长度与删除所有大写字母的输入长度进行比较。

更好的方法是使用正则表达式 下面是代码

function howManyCaps(str) {
    return str.replace(/[^A-Z]/g, '').length;
}
console.log(howManyCaps(" How many Caps"))

问题是你的间距。

" How many Caps"

有 3 个空格和 2 个大写字母..应该可以帮助您调试

最简单的方法是[O(N)]:

function howManyCaps(str) {
    let upper = 0;
    for (let i = 0; i < str.length; i++) {
        if (str[i] >= 'A' && str[i] <= 'Z') upper++;
    }
    return upper;
};

howManyCaps(' How many Caps');

有些人说不要使用空格或考虑空格,但这也不是一个好的策略,因为它也会因特殊字符而中断。