【问题标题】:How do I count the number of words in a string that have 3,4,5 or 6 characters in Javascript?如何计算 Javascript 中包含 3、4、5 或 6 个字符的字符串中的单词数?
【发布时间】:2011-04-26 03:47:03
【问题描述】:

我接到了一个任务... "计算字符串 "tx_val" 中包含 3、4、5 或 6 个字符的单词数 在一行中显示这四个计数,用逗号分隔"

我一直在尝试多个不同的循环语句,但我似乎无法得到正确的答案。

这是给我的代码:

<html>
<head>
<script language="javascript"> 
<!--
function fred()
{
var tx_val=document.alice.tx.value;
len_tx=tx_val.length


-->
</script>
</head>
<body>
<form name="alice">
<b>Assignment #1 Javascript</b>
<p>
The text box below is named "tx". The form is named "alice".
<p>
<input type="text" name="tx" formname="alice" size="50" value="the quick brown fox jumped over the lazy dogs back">
</form>

【问题讨论】:

    标签: javascript string


    【解决方案1】:

    正则表达式 /\b\w{3,6}\b/ 匹配长度为 3 到 6 个字符的“单词”。现在,“单词”的定义可能适合您的目的,也可能不适合您的目的,但它可能很接近。

    有了它,您可以执行以下操作:

    var matches = theString.match(/\b\w{3,6}\b/g).length;
    

    获取计数。

    转义符“\w”匹配任何“单词”字符,在 JavaScript 中表示字母数字和下划线。如果您不喜欢这样,您可以构建自己的角色类。例如,如果您只关心由字母组成的单词,您可以这样做:

    var matches = theString.match(/\b[a-zA-Z]{3,6}\b/g).length;
    

    “\b”转义是一个零长度的单词描述匹配。它匹配单词的开头或结尾,而不会在这样做时“消耗”任何字符。

    edit — 抱歉,我最初打错了“。”在{3,6} 限定符中(我刚才差点又做了一次:-)——应该是逗号。

    【讨论】:

    • 谢谢!! :] 我过得很艰难,但你的代码有效!我真的很感激!
    【解决方案2】:

    您可以先使用split method 将单词拆分为一个数组。然后,您可以使用其forEach method 循环该数组并计算每个单词的长度。

    【讨论】:

      【解决方案3】:

      这里有一些简单的问题可能会帮助您建立一个简单的方法:

      1. 什么是“词”?你怎么能找到所有这些?
      2. 你能把这些词放到一个字符串数组中吗?
      3. 你能遍历一个数组吗?
      4. 循环时可以增加计数器吗?
      5. 你能告诉我一个特定的单词有多少个字母吗?
      6. 能否根据if 语句有条件地递增计数器?
      7. 可以嵌套两个循环吗?

      也就是说,这就是我个人的做法(如果您在不理解的情况下复制/粘贴它,可能无法满足您的作业要求):

      var text = "Oh HAI, is this the longest text allowd?"
      for (var counts=[],l=3;l<=6;++l){
        var re = new RegExp('\\b\\w{'+l+'}\\b','g');
        var words = text.match(re);
        counts.push(words ? words.length : 0);
      }
      console.log(counts.join(','));
      //-> 2,2,0,1
      

      【讨论】:

        【解决方案4】:

        我不懂 Javascript。但是你的代码应该是这样的:

        function fred()
        {
        var threeCharacterLong = 0;
        var fourCharacterLong = 0;
        var fiveCharacterLong = 0;
        var sixCharacterLong = 0
        var tx_val=document.alice.tx.value;
        var splittedArray = tx_val.Split(" ");
        foreach (var word in splittedArray)
        {
            if (word.length == 3)
               threeCharacterLong++;
            else if (word.length == 4)
               fourCharacterLong ++;
            else if (word.length == 5)
               fiveCharacterLong ++;
            else if (word.length == 6)
               sixCharacterLong ++;
        }
        
        }
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2016-01-09
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-09-26
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多