Как мне подсчитать количество слов в строке, которые имеют 3,4,5 или 6 символов в Javascript? - PullRequest
1 голос
/ 26 апреля 2011

Мне дали задание ... "посчитать количество слов в строке" 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>

Ответы [ 4 ]

4 голосов
/ 26 апреля 2011

Регулярное выражение /\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" - это совпадение нулевой длины для разграничения слов. Он совпадает либо с началом, либо с концом слова, но при этом сам «не потребляет» никаких символов.

изменить & mdash; извините, я изначально набрал "." в квалификаторе {3,6} (и я чуть не повторил это только сейчас :-) & mdash; должны были быть запятые.

1 голос
/ 26 апреля 2011

Вы можете сначала разбить слова на массив, используя метод split . Затем вы можете перебрать этот массив, используя метод forEach и посчитав длину каждого слова.

0 голосов
/ 26 апреля 2011

Я не знаю 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 ++;
}

}
0 голосов
/ 26 апреля 2011

Вот несколько простых вопросов, которые могут помочь вам создать простой подход:

  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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...