我尝试获取字符串的一部分,这是字符串:
"#" id="fs_facebook-btn" data-count="facebook" onclick="window.open('https://www.facebook.com/sharer/sharer.php?u=http%3A%2F%2Fsharebtns.fingerspitz.nl.ebox%2F', '_blank', 'scrollbars=0, resizable=1, menubar=0, left=100, top=100, width=550, height=440, toolbar=0, status=0');return false" title="Share on Facebook"
我想获得data-count
的值,这是我尝试过的:
for (var i = 0; i < s.length; i++) {
console.log(s[i]);
console.log(s[i].substring(0, s[i].indexOf('data-count="')));
}
但是到了我想要获得的那部分,如何获得数据计数的值呢?
答案 0 :(得分:1)
要继续使用.indexOf
和.substring
的方法:
var s = '"#" id="fs_facebook-btn" data-count="facebook" onclick=...';
var searchFor = 'data-count="';
var startPos = s.indexOf(searchFor) + searchFor.length; // add on the length to get the end
var endPos = s.indexOf('"', startPos); // find the next " after data-count=
alert(s.substring(startPos, endPos)); // extract the string
另一种方法是让jquery为您解析html,即使它以字符串开头,也可以通过将其包装到<div .. >
中来将其转换为jquery对象,例如:
var s = '"#" id="fs_facebook-btn" data-count="facebook" onclick=...';
alert($("<div " + s + "></div>").data("count"))
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
虽然代码少一点,但是如果要分析的字符串很多(10,000+),速度会变慢。
答案 1 :(得分:0)
您可以尝试用空格分割此字符串,然后使用find
查找适当的元素,然后使用replace
进行清理:
s.split(' ').find(v => v.contains('data-count')).replace(/.*?"([^"]+")/, '$1')
或最后用=
分隔并删除"
个字符:
s.split(' ').find(v => v.contains('data-count')).split('=')[1].replace(/"/g, '')