在indexOf

时间:2015-12-06 02:36:55

标签: javascript jquery wordpress

我正在根据字符串发生的次数在某些wordpress帖子的底部插入文本。我设法将文本添加到底部并附加,但我想使用indexOf在特定位置插入。

这是原始文本:

 if ($('body').hasClass("single-post")){
        var count = 0;
        var cSearch = $('body').text();
        var words = cSearch.indexOf('Words To Find')
            while (words !== -1){
            count++;
            words = cSearch.indexOf('Words To Find', words + 1);
            }
        if( count >= 2){
        $('.entry-content').append('<br><br>Sample Text');
        }
    }

以下是我将如何获取我想要插入的位置:

var insertLocation = cSearch.indexOf('Show what ya');

如何拼接&#34;示例文本&#34;进入insertLocation指定的位置?

我发现了一些关于使用polyfil for .splice但我不确定它是否适用于此。使用它如:

$(cSearch).splice( insertLocation, -1 ).text( "Sample Text" );

有人可以建议一种方法吗?谢谢!

1 个答案:

答案 0 :(得分:0)

尝试创建代表总匹配的变量,indexOf()匹配加匹配的文本.length,使用.slice()在第二次匹配前插入原始文本,新文本插入,然后是原始文本的其余部分

var text = $("div").text(),
  match = "Words To Find",
  txt = " Sample Text ",
  matches = 0,
  n = 0,
  // `max` : total number of `matches` before inserting `txt`
  max = 2;
while (matches < max) {
  if (text.indexOf(match, n) !== -1) {
    i = text.indexOf(match, n);
    n = i + match.length;
    ++matches
  }
}
// insert `re` after second match of `"Words To find"`
var re = text.slice(0, i + match.length) + txt;
$("div").text(re + text.slice(i));
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js">
</script>

<body>
  <div>Words To Find abc def Words To Find ghi Words To Find</div>
</body>