Используя JavaScript, как получить количество букв Y из предложения X количество раз?

#javascript #html

#javascript #HTML

Вопрос:

Я пытаюсь создать небольшой инструмент, который, когда пользователь вводит предложение, а затем указанную букву, берет эту букву и подсчитывает ее в предложении, введенном пользователем выше, и отображает количество раз, когда буква появляется в предложении.

 let sentence = document.getElementById("textbox1")
let character = sentence.value
let letter = document.getElementById("textbox2")
let getLetter = letter.value
var exampleString = character
document.getElementById("parseString").onclick = letterCount;
function letterCount(string, letter, caseSensitive) {
  var count = 0;
  if (!caseSensitive) {
    string = string.toUpperCase();
    letter = letter.toUpperCase();
  }
  for (var i = 0, l = string.length; i < string.length; i  = 1) {
    if (string[i] === letter) {
      count  = 1;
    }
  }
  return count;
}
let display = (letterCount(character, getLetter, true));
document.getElementById("output1").innerHTML   
 <p>Enter a sentence: <input type="text" id="textbox1"></p>
<p>Enter a letter: <input type="text" id="textbox2"></p>
<button id="parseString">Parse String</button>
<p id="output1">The letter appears in the string</p>  

Я все еще новичок в JavaScript и все еще учусь правильно кодировать и вставлять определенные вещи.

Комментарии:

1. Можете ли вы исправить свой фрагмент, чтобы он выполнялся? Uncaught SyntaxError: Unexpected string

2. Код, похоже, работает, возможно, он немного уродлив, и его не помешало бы немного очистить, но в чем именно заключается ваш вопрос?

3. @ChatterOne мой вопрос в том, как я могу сделать так, чтобы, когда пользователь вводит предложение, скажем, «StackOverflow», а затем вводит «o» во 2-м текстовом поле, и на выходе отображается «Буква O появляется 2 раза»

4. @CertainPerformance сейчас обновится.

5. @MichaelKheong Вы должны иметь возможность использовать sentence.value для получения значения текстового поля в вашем коде.

Ответ №1:

Очистил ваш код, некоторые переменные в top должны быть внутри вашего обработчика событий

 document.getElementById("parseString").onclick = function() {
  let character = document.getElementById("textbox1").value;
  let getLetter = document.getElementById("textbox2").value;
  let count = letterCount(character, getLetter, true);
  document.getElementById("output1").innerHTML = `The letter '${getLetter}' appears in the string '${character}' ${count} times`;
}

function letterCount(string, letter, caseSensitive) {
    regexp = caseSensitive ? new RegExp(letter, 'g') : new RegExp(letter, 'gi');
    return string.match(regexp).length;
}  
 <p>Enter a sentence: <input type="text" id="textbox1"></p>
<p>Enter a letter: <input type="text" id="textbox2"></p>
<button id="parseString">Parse String</button>
<p id="output1">The letter appears in the string</p>  

Комментарии:

1. Я бы, по крайней мере, добавил ; к окончаниям строк (многие отсутствуют), также exampleString никогда не используется