检查一个字符串是否存在于div文本中的jQuery

3

var qtr = $('div').text();
var qtr1 = qtr.split(',')
console.log(qtr1.length)

for (var i = 0; i < qtr1.length; i++) {
  console.log(qtr1[i]);
}
console.log(qtr1);
if ($.inArray('1st qtr', qtr1)) {
  alert('1st');
}
if ($.inArray('2nd qtr', qtr1)) {
  alert('2nd');
}
if ($.inArray('3rd qtr', qtr1)) {
  alert('3rd');
}
if ($.inArray('4th qtr', qtr1)) {
  alert('4th');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>1st qtr,2nd qtr,3rd qtr,4th qtr,</div>

我有一个带文本的 div,我想检查这个 div 中是否包含特定的文本。我尝试分割 div 文本并使用 $.inArray 进行检查,但即使缺少第一个文本,它也不会显示。
问题如下:
  1. 即使只有 4 个文本,为什么长度为 5,最后添加了一个额外的空格?
  2. 为什么存在第一个文本“1st qtr”,但它没有被显示出来?
  3. 最好的方法是什么,可以检查文本是否存在于文本中?

如果您想将关键字突出显示,可以使用 https://github.com/julmot/jmHighlight。 - dude
@julmot 我不想突出显示文本,我会将其用作其他目的的参数。 - guradio
2
你在文本末尾加了一个逗号,这就是长度为5的原因。 - shemy
2
你得到了长度为5,因为内容以逗号结尾-此后的空字符串被计算为第五个元素。 - slomek
1个回答

5
即使只有4个字符,为什么长度会显示为5?因为最后添加了一个额外的空格。
该字符串在结尾处包含逗号“,”。当使用逗号“,”拆分字符串时,由于最后一个逗号之后没有任何内容,因此将添加一个空字符串作为最后一个元素。您可以使用正则表达式来删除最后一个逗号“,”。
第一个文本“1st qtr”为什么不显示?因为inArray返回在字符串中找到的子字符串的索引。所以对于第一个字符串,它返回索引0。由于0是假值,因此if条件被评估为false,块未被执行。 更新的代码:

var qtr = $('div').text().replace(/,$/, '');
var qtr1 = qtr.split(',');

console.log(qtr1.length)

if ($.inArray('1st qtr', qtr1) !== -1) {
  alert('1st');
}
if ($.inArray('2nd qtr', qtr1) !== -1) {
  alert('2nd');
}
if ($.inArray('3rd qtr', qtr1) !== -1) {
  alert('3rd');
}
if ($.inArray('4th qtr', qtr1) !== -1) {
  alert('4th');
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div>1st qtr,2nd qtr,3rd qtr,4th qtr,</div>

如何检查一个文本是否存在于另一个文本中?

indexOf 是最好的方法来检查字符串是否包含子字符串。

var str = '1st qtr,2nd qtr,3rd qtr,4th qtr,';

var contains = str.indexOf('4th qtr') > -1;

alert('str contains  4th qtr? ' + contains);


为什么在条件中加入-1?即使第四个存在,也没有显示出来。我需要显示所有的文本,因为它们都存在。 - guradio
你所做的是将最后一个,改为空格,并在条件中添加了!== -1,对吗?我想理解你所做的,请耐心等待。 - guradio
请给我3分钟来勾选它作为答案。请解释一下最后一个问题,谢谢。 - guradio
1
@Pekka 第一个字符的索引是零,就像数组一样,当元素在数组中未找到时,返回 -1,希望这能消除困惑。 - Tushar
1
@Pekka 供参考,https://dev59.com/rGMk5IYBdhLWcg3w5R6k - Tushar
显示剩余2条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接