首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >查找字符串中不起作用的元音数量的简单程序

查找字符串中不起作用的元音数量的简单程序
EN

Stack Overflow用户
提问于 2012-10-17 02:32:29
回答 6查看 12.4K关注 0票数 0

我正在尝试JavaScript,但是我的浏览器拒绝执行这个我用switch case函数编写的程序。目标是找出一个字符串中的元音数量(考虑所有输入都是小写的)

当我点击“提交”按钮时,框中的文本消失了,但什么也没有发生。警告"hello“也没有出现,所以我假设函数甚至没有被执行。

代码语言:javascript
运行
复制
   <html>
   <head>
   <script>
   function vow(form)
    {
     alert("hello");
     var a = new Array(10);
     a = form.t1.value;
     var flag = 0;
     var i;

     for(i=0;i<10;i++)
       {
     switch (a[i])
      {
       case 'a':
       flag++;
       break;

       case 'e':
       flag++;
       break;

       case 'i';
       flag++;
       break;

       case 'o';
       flag++;
       break;

       case 'u';
       flag++;
       break;
      }
      }
  alert(flag);  
  }
  </script>
  </head>

  <body>
  <form>

  <input type="text" name="t1">
  <input type="submit" value="SUBMIT" onClick="vow(this.form)"/>

  </form>
  </body>
  </html>
EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2012-10-17 02:36:04

您正在使用;而不是:

代码语言:javascript
运行
复制
case 'i';
      __^__

ou也是如此。

更新:

我还展示了一个(内存密集型)替代版本:

代码语言:javascript
运行
复制
var count = input.match(/[aeiou]/gi).length;

更新:

代码语言:javascript
运行
复制
var vow = function(str) {
    var matches = str.match(/[aeiou]/gi);
    var count = matches ? matches.length : 0;
    alert("'" + str + "' contains " + count + " vowel(s)");
    return false;
}​ ​

代码语言:javascript
运行
复制
<input type="submit" value="SUBMIT" onClick="return vow(this.form.t1.value)"/>

You can see it here

票数 8
EN

Stack Overflow用户

发布于 2012-10-17 02:36:37

你可以做得更简单..例如,从输入中删除元音,并检查与原始字符串的长度差异。

代码语言:javascript
运行
复制
var count = input.length - input.replace(/[aeiou]/gi, '').length;

EDIT:或者更简单,删除除元音之外的所有内容;-)

代码语言:javascript
运行
复制
function vow(form) {
    alert(form.t1.value.replace(/[^aeiou]/gi, '').length);
}​
票数 5
EN

Stack Overflow用户

发布于 2012-10-17 02:41:24

程序的一个小小的改进版本:

代码语言:javascript
运行
复制
function vow(form) {
    var a = form.t1.value;
        flag = 0;

    for (var i = 0; i < a.length; i++) {
        switch (a[i]) {
            case 'a':
            case 'e':
            case 'i':
            case 'o':
            case 'u':
                flag++;
                break;
        }
    }
    alert(flag);
}​

http://jsfiddle.net/b36D6/

但这项任务可以处理得更简单:

代码语言:javascript
运行
复制
function vow(str) {
    return --(str.split(/[aeiou]/).length);
}

所以:vow("hello!") -> 2

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/12921195

复制
相关文章

相似问题

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