计算字符串中的大写和小写字符

Jam*_*mes 7 javascript string

首先,我知道这远非专业.我正在努力学习如何使用字符串.这个应用程序应该做的是采用简单的文本输入并用它做一些事情:

计数字母,计数大写和小写字母,计数单词和计数空格.这就是我所做的:

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>Case Check</title>
    <script type="text/javascript">
        function checkCase(text)
        {   

            var counter = 0;
            var letters = 0;
            var lowercase = 0;
            var uppercase = 0;
            var spaces = 0;
            var words = 0;


            for(; counter < text.length; counter++)
            {
                if(isUpperCase(text.charAt(counter))) {uppercase ++; letters++;}
                if(isLowerCase(text.charAt(counter))) {lowercase ++; letters++;} 
                if((text.charAt(counter) == " ") && (counter < text.length))
                {
                    spaces += 1;
                    words += 1;
                }
                if((text.charAt(counter) == ".") || (text.charAt(text(counter)) == ",")) continue;
            }
            return  [letters, lowercase, uppercase, spaces, words];
        }

        function isUpperCase(character)
        {
            if(character == character.toUpperCase) return true;
            else return false;
        }

        function isLowerCase(character)
        {
            if(character == character.toLowerCase) return true;
            else return false;
        }
    </script>
</head>
<body>
    <script type="text/javascript">
        var typed = prompt("Enter some words.");
        var result = checkCase(typed);
        document.write("Number of letters: " + result[0] + "br /");
        document.write("Number of lowercase letters: " + result[1] + "br /");
        document.write("Number of uppercase letters: " + result[2] + "br /");
        document.write("Number of spaces: " + result[3] + "br /");
        document.write("Number of words: " + result[4] + "br /");
    </script>
</body>
Run Code Online (Sandbox Code Playgroud)

根据用户的建议做了一些更改.现在的问题是它不会让我像对象一样对待'text'.

MrJ*_*MrJ 12

使用正则表达式.

var s = "thisIsAstring";
var numUpper = s.length - s.replace(/[A-Z]/g, '').length;  

// numUpper = 2
Run Code Online (Sandbox Code Playgroud)

更多关于JavaScript替换/正则表达式

  • 或者只是 `var numUpper = s.replace(/[^AZ]/g, '').length;` (5认同)

Huy*_*ran 6

您可以使用match()和正则表达式。

var str = "aBcD"; 
var numUpper = (str.match(/[A-Z]/g) || []).length;    // 2
Run Code Online (Sandbox Code Playgroud)


asa*_*lla 2

不确定是否是整个问题,但这个问题有问题

if(text.charAt(letters)) == " " && text(letters) < text.length)
                       ^
Run Code Online (Sandbox Code Playgroud)

应该

if(text.charAt(letters) == " ") && text(letters) < text.length)
                              ^
Run Code Online (Sandbox Code Playgroud)

事实上我会成功的

if((text.charAt(letters) == " ") && (text(letters) < text.length))
Run Code Online (Sandbox Code Playgroud)