【问题标题】:How to count the letters in a text with Javascript?如何用Javascript计算文本中的字母?
【发布时间】:2013-11-21 13:35:07
【问题描述】:

我目前正在尝试编写一个内部有一个简单文本区域的“网络应用程序”,我希望在其中指出所写文本的字母。

例如,如果我写:

''你几岁了?我今年19岁''

当我按下 HTML/CSS 页面上的按钮时,我需要一个代码来告诉我在这句话中使用了多少个“A”、“Y”和“D”(以及从 0 到 26 的所有字母)。

您能否告诉我我必须在我的 .JS 文件中写入什么以及我应该在我的 .HTML 文件中写入什么,以便在写入内容时单击一个按钮来执行此操作?

我希望我的解释足够详细。谢谢!

编辑(我对我造成的问题感到非常抱歉) - 我到目前为止所做的看起来像这样:

HTML:

<link rel="stylesheet" type="text/css" href="theme.css">
<meta charset="utf-8"> 

<script src="test.js" type="text/javascript"></script>

<div class='header'>
Al.Fa.Be
</div>

<div class='yaz'>
<textarea></textarea>

</div>

<div class='description'>
<a href='http://www.google.com'>Ara</a>
</div>

<div class='description2'>
<input id="clickMe" type="button" value="Hesapla" onclick="doFunction();" />
</div>

CSS:

body{
background:white;
}

selection{
background:#CCC;
}

#clickMe{
background:#CCC;
border:1px solid #333;

}

.header{
font-size:70px;
font-weight:bold;
font-family:Arial;
color:#333;
margin-left:580px;
padding-top:200px;
}

textarea{
width:1210px;
height:40px;
color:black;
margin-top:20px;
margin-left:100px;
padding-left:10px;
padding-top:10px;
font-size:18px;
font-family:Arial;
}

.description{
background:#f2f2f2;
padding:6px;
width:50px;
text-align:center;
border:1px solid #ddd;
font-family:Arial;
margin-left:620px;
margin-top:20px;
font-size:14px;
}

.description a{
color:#555;
text-decoration:none;
}

.description2{
background:#f2f2f2;
padding:6px;
width:60px;
text-align:center;
border:1px solid #ddd;
font-family:Arial;
margin-left:750px;
margin-top:-30px;
font-size:14px;
}

.description2 a{
color:#555;
text-decoration:none;
}

.yaz{
color:white;
}

Javascript:

// Input name. Count number of alphabets a-z
class program                                                          
{
    public static void main(String[] args) 
    {
        String name = args[0];
        int count[] = new int[29];
        int i,p;
        int n = name.length();
        name = name.toUpperCase();
        char c;
        for (i=0; i<29; i++) 
        {
            count[i] = 0;   
        }
        for (i=0; i<n; i++) 
        {
            c = name.charAt(i);
            p = (int) c;
            count[p-65]++;
        }
        for (i=0; i<29 ; i++) 
        {
            if (count[i] >0) 
            {
                System.out.println((char)(i+65) + " occurs " + count[i] + " times");
            }
        }
    }
}

PS:请记住,我真的很讨厌这个,我需要知道如何以特定的方式做到这一点。

【问题讨论】:

  • 您好,欢迎来到 StackOverflow。您应该知道,本网站不是一个人下订单,其他成员为他们提供现成代码的地方;声明的目的是帮助其他程序员解决他们遇到的问题。如果您尝试了某些方法但不起作用,请向我们展示并提出具体问题;问题的当前形式(“告诉我我必须写什么”)离题了。
  • -1 用于多问。第一部分是一个不错的问题,但整体只是证明您需要的不仅仅是一个 SO 答案。
  • 至于第一部分,只是一个提示:我可能会使用正则表达式/[a-z]/gi
  • @Doguhanca 你真的应该拿起一本书或者看看在线 Javascript 介绍。另请参阅stackoverflow.com/tags/javascript/info,有一个“学习 JavaScript”部分。

标签: javascript html css count letters


【解决方案1】:

查看这篇文章:http://davidwalsh.name/javascript-unique-letters-string。 这正是您要寻找的。​​p>

编辑: HTML:

<link rel="stylesheet" type="text/css" href="theme.css">
<meta charset="utf-8"> 

<script src="test.js" type="text/javascript"></script>

<textarea rows="5" cols="10" id="str" value="Insert the string" />
<input type="button" value="Submit" id="button" />

JS:

document.getElementById('button').onclick = function() {
/* returns the size/length of an object */
Object.size = function(obj) {
    var size = 0;
    for(key in obj) {
        if(obj.hasOwnProperty(key)) size++;
    }
    return size;
}

//initial vars
var str = document.getElementById('str').val;
var letters = new Object;

//loop, figure it out
for(x = 0, length = str.length; x < length; x++) {
    var l = str.charAt(x)
    letters[l] = (isNaN(letters[l]) ? 1 : letters[l] + 1);
}

//output count!
for(key in letters) {
    console.log(key + ' :: ' + letters[key]);
}
console.log(Object.size(letters));

}

PS:你的“javascript”看起来不像 javascript...它看起来像 java...

【讨论】:

  • 这确实是我想要的。但是,如何将它与我上面编写的 HTML/CSS 代码结合起来?我不知道。我想单击一个按钮,当在我的页面的文本区域中写入某些内容时会发生这种情况。你能解释一下吗?那太棒了!
  • @Doguhanca Okey,你有。
【解决方案2】:

试试这个:

var str = "How old are you? I am 19 years old";
str = str.toLowerCase();// search is case sensitive
var counta = str.match(/a/g);
var countd = str.match(/d/g);
var county = str.match(/y/g);
alert("a:"+counta.length+" d:"+countd.length+" y:"+county.length);

Fiddle here:

【讨论】:

  • 这非常接近我的要求。但是: 1. 如何在文本区域执行此操作? 2. 如何对 HTML 文件执行此操作?我的意思是我会将其复制并粘贴到 .JS 文件中,我必须在 .HTML 文件上做什么?
  • @Doguhanca 我不是来免费为你写所有东西的.. 努力或雇用我可以解释你的人,整理你的代码,但不是为你写所有东西
【解决方案3】:

这就是我的做法。

var count = {};
var msg = "Your message";

for(var i = 0; i < msg.length; i++) {
    var c = msg[i];
    c = c.toLowerCase();
    if(typeof(count[c]) == "undefined") {
        count[c]=1;
    }
    else {
        count[c]++;
    }
}

如果你愿意,你可以只检查这样的字母:

if('a'.charCodeAt(0) <= c <= 'z'.charCodeAt(0)) 
    //This is a small letter

【讨论】:

    猜你喜欢
    • 2018-09-20
    • 1970-01-01
    • 1970-01-01
    • 2023-02-02
    • 2012-03-02
    • 2020-12-11
    • 2011-09-05
    • 2023-03-31
    • 2021-12-12
    相关资源
    最近更新 更多