这可能是一个非常基本的问题,但我想知道如何找出.html()
是否具有特定值(在本例中为字符串)。一个例子:
<p id="text">Hello this is a long text with numbers like 01234567</p>
我想问一下
var $text = $('#text');
if ($text.html() == '01234567')
当然这不起作用。但是,我如何才能将另一种方法提升为.html()
提出
if($text.html().contains() == '01234567');
重要的是,在我的情况下,我肯定会搜索与空格隔离的内容,而不是像withnumberslike01234567
那样,但实际上如果这样做也会很有趣。
提前致谢!
答案 0 :(得分:3)
(' ' + document.getElementById('text').textContent + ' ').indexOf(' 01234567 ') != -1
修复了文本开头的问题,不会滥用正则表达式,并且对于vanilla.js来说是万岁!
答案 1 :(得分:2)
您可以使用indexOf
:
var text = $('#text').html();
if(text.indexOf(" 01234567") != -1) {
// your logic
}
您的HTML可能会以01234567
开头;在这种情况下,你可以这样做:
if((' ' + text).indexOf(" 01234567") != -1) {
// your logic
}
谢谢,bjb568和Felix Kling。
答案 2 :(得分:1)
据我从OP了解,这些是测试案例:
hello12348hello // false
hello 1234hello // false
hello012348 hello // false
hello 1234 hello // TRUE
1234hello // false
hello1234 // false
1234 hello // TRUE
hello 1234 // TRUE
// false
1234 // TRUE
1234 // TRUE
**将“”更改为任何其他空白字符(例如
\t
,\n
,...)应该会得到相同的结果。
正如OP所说:
以空格分隔的内容,而不是像withnumberslike01234567
所以,hello 01234567withnumberslike
也错了!!!
创建功能:
function contains(value, searchString){
// option 1: splitting and finding a word separated by white spaces
var words = value.split(/\s+/g);
for (var i = 0; i < words.length; i++){
if (words[i] === searchString){
return true;
}
}
return false;
// option 1a: for IE9+
return value.split(/\s+/g).indexOf(searchString) > -1;
// option 2: using RegEx
return (new RegExp("\\b" + searchString + "\\b")).test(value);
return (new RegExp("(^|\\s)" + searchString + "($|\\s)")).test(value); // this also works
// option 3: Hardcoded RegEx
return /\b1234\b/.test(value);
}
See case tests here in jsFiddle
它还会接受标签和空格..
注意我不担心使用RegEx,它不像indexOf那么快,但它仍然非常快。这不应该是一个问题,除非你迭代数百万次次。如果是这种情况,也许你需要重新考虑你的方法,因为可能出现了问题......
我会说你考虑兼容性,有很多用户仍在使用IE8,IE7,甚至IE6(现在差不多10% - 2014年4月)。 - 不再是2016年发行..
此外,最好保持代码标准。
因为您正在使用jQuery,所以您也可以使用.text()
来查找字符串:
var element = $(this);
var elementText = element.text();
if (contains(elementText, "1234"){
element.text(elementText.replace("1234", "$ 1234.00"))
.addClass("matchedString");
$('#otherElement').text("matched: 1234");
}
感谢@ Karl-AndréGagnon的提示。
\b
:任何边界词(或字符串的开头/结尾)
^
:字符串的开头
\s
:任何空白字符
$
:字符串的结尾为
答案 3 :(得分:0)
您可以在JavaScript中使用String.indexOf方法来确定一个字符串是否包含在另一个字符串中。如果传入indexOf的字符串不在字符串中,则返回-1。这是你应该利用的行为。
If ($test.html().indexOf("1234567890") != -1)
//Do Something
答案 4 :(得分:-1)
if($text.html().indexOf('01234567') != -1) {
}
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/indexOf