首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >计算字符串中的大小写字符

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

Stack Overflow用户
提问于 2013-10-04 00:24:10
回答 7查看 19K关注 0票数 16

首先,我知道这很不专业。我在努力学习如何处理字符串。这个应用程序应该做的就是输入一个简单的文本,然后用它做一些事情:

计数字母,计数大写字母和小写字母,计数单词和计数空格。以下是我所做的:

代码语言:javascript
代码运行次数:0
运行
复制
<!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>

根据用户的建议做了几处修改。现在的问题是,它不允许我像对待字符串对象一样对待'text‘。

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2013-10-04 00:33:27

不确定整个问题,但是这个问题很糟糕

代码语言:javascript
代码运行次数:0
运行
复制
if(text.charAt(letters)) == " " && text(letters) < text.length)
                       ^

应该是

代码语言:javascript
代码运行次数:0
运行
复制
if(text.charAt(letters) == " ") && text(letters) < text.length)
                              ^

实际上我会做到的

代码语言:javascript
代码运行次数:0
运行
复制
if((text.charAt(letters) == " ") && (text(letters) < text.length))
票数 2
EN

Stack Overflow用户

发布于 2014-04-18 20:12:14

使用正则表达式。

示例

代码语言:javascript
代码运行次数:0
运行
复制
var s = "thisIsAstring";
var numUpper = s.length - s.replace(/[A-Z]/g, '').length;  

// numUpper = 2

JavaScript替换/正则表达式的Se更多信息

票数 28
EN

Stack Overflow用户

发布于 2017-06-11 11:55:21

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

代码语言:javascript
代码运行次数:0
运行
复制
var str = "aBcD"; 
var numUpper = (str.match(/[A-Z]/g) || []).length;    // 2
票数 12
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19171240

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档