我正在编写一个函数,但无法弄清楚如何计算大写字母和标点符号。
我的功能是:
function countWords(word, string) {
var subStr = string.split(word);
return subStr.length - 1;
}
当我尝试使用wordCount进行测试时它起作用("嘿","这是代码嘿")但是如果我尝试则不行(" HEY&#34 ;,"这是代码嘿")
我试过
var subStr= string.toUpperCase().split(word)
但它不再适用于小写字母。
答案 0 :(得分:0)
为什么你不能这样做。
function countWords(word, string) {
word= word.toLowerCase();
string=string.toLowerCase();
var subStr = string.split(word);
return subStr.length - 1;
}
因此,无论我们发送的任何值是否会转换为小写,它都会分裂。 这有道理吗?
答案 1 :(得分:0)
试试这个:
function countWords(word, string) {
var subStr = string.toLowerCase().split(word.toLowerCase());
return subStr.length - 1;
}
$(document).ready(function(){
$('#result').html(countWords("HEY","this is code hey"));
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div id="result"></div>
答案 2 :(得分:0)
首先尝试将参数发送到所有大写或小写,以便它与您要比较的字符串的大小写匹配。例如,
function countWords(word.toLowerCase, string.toLowerCase)
无论如何,都会评估搜索。
答案 3 :(得分:0)
你可以使用带有i
和g
修饰符的正则表达式(不区分大小写/匹配所有)并匹配,然后返回长度:
function wordCount(search, txt) {
var regex = new RegExp("\\W" + search + "\\W|\\W" + search, "ig");
var match = txt.match(regex);
return match ? match.length : 0;
}
console.log(wordCount("hey","this is code heyHey HEY hey")); // 2
如果您想将heyHey作为2个匹配项,只需从正则表达式中删除|\\W" + search