Строка поиска для точного слова, возврат количества совпадений - PullRequest
0 голосов
/ 06 мая 2020

Здравствуйте, мне было интересно, может ли кто-нибудь помочь, я пытаюсь найти строку для слова и консольного журнала, сколько раз это слово появляется в строке, однако я хочу, чтобы он возвращал только количество целых слов. находит, поэтому на данный момент приведенный ниже пример вернет "3", потому что он дважды найдет "автомобиль", но также слово "забота", которое содержит в нем слово "автомобиль". Могу ли я изменить код, чтобы он только находит слово целиком, а не слова внутри него?

Большое спасибо.

<div class="sentence">I have a car and I need to take good care of this car</div>

let find = 'car';

let count = $('.sentence').text().split(find).length - 1;

console.log(count);

Ответы [ 5 ]

0 голосов
/ 06 мая 2020
let string = $('.sentence').text();

Теперь сопоставьте строку, которую вы ищете. Чтобы найти точное совпадение, вы можете написать, как показано ниже

let count =  string.match(/\bcar\b/g);
count = count? count.length : 0;  
console.log(count);
0 голосов
/ 06 мая 2020

Что вы можете сделать, так это разбить слово на основе разделителя пробела, который вернет массив слов. Затем вы можете l oop в этом массиве и искать точное совпадение вашего слова:

const str = 'I have a car and I need to take good care of this car';
const words = str.split(' ');
words.forEach(function(word){
    if (word==="car"){
        console.log("found car")
    }
})

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

0 голосов
/ 06 мая 2020

Абсолютно есть способ, используйте соответствие:

let count = $('.sentence').text().match(/\bcar\b/g).length;

Используя границу слова (\b), возврат будет 2. Без его использования (т.е. /car/) возврат будет 3 из-за слова care в этой строке.

0 голосов
/ 06 мая 2020

Здесь вы можете использовать match, чтобы найти все подстроки.

const matches = line.match(/\bcar\b/g)

Он возвращает null, если с ними нет совпадений или массива

Итак, чтобы их подсчитать:

const count = matches ? matches.length : 0
0 голосов
/ 06 мая 2020

Вы можете использовать регулярное выражение и использовать test для соответствия точной строке. $('.sentence').text().split(' ') разделит строку и создаст массив, затем используйте reduce, чтобы получить счет. Внутри reduce обратного вызова используйте test , чтобы найти точное слово, и если совпадения, увеличьте количество

let find = 'car';
let count = $('.sentence').text().split(' ').reduce((acc, curr) => {
  if (/^car$/.test(curr)) {
    acc += 1;
  }
  return acc;
}, 0)
console.log(count);
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<div class="sentence">I have a car and I need to take good care of this car</div>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...