2011-04-26 37 views
1

我一直在考虑一个任务... “算在字符串中的单词的数量‘tx_val’有3,4,5或6个字符 显示在用逗号分隔的单线这四个数”如何计算Javascript中有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> 

回答

4

正则表达式/\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”逃逸是一个词描绘零长度匹配。它匹配一个单词的开始或结尾,在这样做时本身不会“消耗”任何字符。

编辑 —对不起,我原本打错了一个“。”在{3,6}限定符(和我几乎做了一次,现在:-) —应该是逗号。

+0

谢谢!! :]我有这么难过,但你的代码工作!对此,我真的非常感激! – Krista 2011-04-26 05:53:29

0

下面是一些可以帮助你建立一个简单的方法简单的问题:

  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 
0

我不知道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 ++; 
} 

} 
相关问题