检查如果一个字符串在一个div文本的jQuery
问题描述:
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
,但是即使第一个文本丢失,也不会显示第一个文本。
问题:
- 为什么我得到5作为长度,即使只有4个文本。最后添加额外空间
- 为什么
1st qtr
的第一个文本即使存在也不显示。 - 什么是
check if a text is existing in a text
的最佳选择。
答
为什么即使只有4个文本,长度为5。在最后添加额外空间
该字符串包含最后的,
。当使用,
分割字符串时,由于在最后一个,
之后没有任何内容,所以将一个空字符串添加为最后一个元素。你可以使用正则表达式去除最后的,
。
为什么现在显示的是第一个qtr的第一个文本,即使它已经存在。
inArray
返回在字符串中找到的子字符串的索引。因此,返回索引0
的第一个字符串。由于0
是falsy值,因此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);
如果你想突出你可以使用https://github.com/julmot/jmHighlight关键字 – dude
@julmot我不想高亮文本我会用它作为参数用于其他目的。 – guradio
您在文字结尾处有一个逗号。这就是长度为5的原因 – shemy