在特定值后获取字符串的一部分

时间:2018-07-31 15:31:07

标签: javascript jquery

我尝试获取字符串的一部分,这是字符串:

"#" 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="')));
}

但是到了我想要获得的那部分,如何获得数据计数的值呢?

2 个答案:

答案 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, '')