<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title></title>
</head>
<body>
<script>
var str = "我国农业发展从追求农民产量转向生产发展与生态保护并重推动绿色生产方式落地生根 河南省唐河县黑龙镇大朱庄村,农民将小麦秸秆装车。唐河县形成“企业田间免费拾捡+我国农业发展从追求农民产量转向生产发展与生态保护并重推动绿色生产方式落地生根 河南省唐河县黑龙镇大朱庄村,农民将小麦秸秆装车。唐河县形成“企业田间免费拾捡+";
var newStr = ""; //字符串中截取后拼接成的新字符串
var keys = ["农民","免费","黑龙","生"]; //关键字
var keysArr = []; //字符串中截取的关键字数组
for(var i=0;i<str.length;i++){
var indexArr = []; //关键字索引数组 -- 关键字所在字符串的索引
// 遍历关键字数组,分别获取他们在字符串中的位置(也就是索引)
for (var j=0;j<keys.length;j++) {
var index = str.indexOf(keys[j]);
if(index != -1){
indexArr.push(index); //不等于 -1 即存在该关键字,保存到关键字索引数组中
}
}
// 如果关键字索引数组有值,则说明字符串中还存在关键字内容
if(indexArr.length > 0){
indexObj = getMin(indexArr); //调用获取最小值函数
var minEle = indexObj.minEle; //最小值(对应的是字符串的索引)
var minIndex = indexObj.minIndex; //最小值对应的索引(对应的是关键字数组的索引)
keysArr.push(str.substring(minEle - 2, minEle + keys[minIndex].length+2)); //截取所在索引的前两位,及后两位
str = str.slice(minEle + keys[minIndex].length);
i--;
}
}
newStr = "..."+keysArr.join("...")+"...";
console.log(newStr);
/**
* 获取数组中的最小值和对应的索引
* @param {Object} arr
*/
function getMin(arr){
var minEle = Math.max.apply(Math, arr); //默认给该数组的最大值
var minIndex = 0;
for (var i=0;i<arr.length;i++) {
//如果当前元素的值比前面保存的值小,就替换,否则不改变
if(arr[i] < minEle){
minEle = arr[i];
minIndex = i;
}
}
return {
minEle : minEle,
minIndex : minIndex
}
}
</script>
</body>
</html>

js 保留字符串中的关键字前后两个字符其他内容用省略号显示的更多相关文章

  1. 怎么用JS截取字符串中第一个和第二个字母间的部分?

    一.JS中用正则判断字符串是否有匹配正则的字符串部分,格式如下: /[a-zA-Z](.*?)[a-zA-Z]/.test('1a123d45678901a2') “.test”前面的部分是正则表达式 ...

  2. js判断输入字符串长度(汉字算两个字符,字母数字算一个)

    js判断输入字符串长度(汉字算两个字符,字母数字算一个) 文本输入时,由于数据库表字段长度限制会导致提交失败,因此想到了此方法验证. 废话不多说上代码: <html> <head&g ...

  3. js字符串长度计算(一个汉字==两个字符)和字符串截取

    js字符串长度计算(一个汉字==两个字符)和字符串截取 String.prototype.realLength = function() { return this.replace(/[^\x00-\ ...

  4. js去除字符串中的标签

    var str="<p>js去除字符串中的标签</p>"; var result=str.replace(/<.*?>/ig,"&qu ...

  5. NET MVC全局异常处理(一) 【转载】网站遭遇DDoS攻击怎么办 使用 HttpRequester 更方便的发起 HTTP 请求 C#文件流。 Url的Base64编码以及解码 C#计算字符串长度,汉字算两个字符 2019周笔记(2.18-2.23) Mysql语句中当前时间不能直接使用C#中的Date.Now传输 Mysql中Count函数的正确使用

    NET MVC全局异常处理(一)   目录 .NET MVC全局异常处理 IIS配置 静态错误页配置 .NET错误页配置 程序设置 全局异常配置 .NET MVC全局异常处理 一直知道有.NET有相关 ...

  6. js去掉字符串中的所有空格

    1.使用js去掉字符串中的所有空格 1.1.定义一个去空格函数方法 function Trim(str,is_global){ var result; result = str.replace(/(^ ...

  7. JS去除字符串中的中括号

    var str = '这是一个字符串[html]语句;[html]字符串很常见'; alert(str.replace(/\[|]/g,''));//移除字符串中的所有[]括号(不包括其内容) //输 ...

  8. 《Python CookBook2》 第一章 文本 - 过滤字符串中不属于指定集合的字符 && 检查一个字符串是文本还是二进制

    过滤字符串中不属于指定集合的字符 任务: 给定一个需要保留的字符串的集合,构建一个过滤函数,并可将其应用于任何字符串s,函数返回一个s的拷贝,该拷贝只包含指定字符集合中的元素. 解决方案: impor ...

  9. C#计算字符串长度,汉字算两个字符

    在C#中的字符串类String中,有个Length属性表示字符串的长度,但该字段返回的是字符的个数,如果字符串中含有中文字符的话,一个汉字占用两个字符的长度,此时获取的长度就不够精确,当然也看具体业务 ...

随机推荐

  1. java如何实现以数据流的形式下载压缩包到本地?

    先不多说,直接贴代码吧,在服务器的E盘下放一个E:/manual.rar的压缩包 package com.cellstrain.icell.controller; import org.springf ...

  2. 2018.08.04 cogs2633. [HZOI 2016]数列操作e(线段树)

    传送门 支持区间加w(i−ql+1)2" role="presentation" style="position: relative;">w(i ...

  3. spring boot2.0冷知识

    首先,Spring Boot 2.0.0 要求 Java 8 或更高版本,不再支持 Java 6 和 7. 在 Spring Boot 2.0 中,许多配置属性已被重命名或被删除,相应地,开发者需要升 ...

  4. 28. Bad Influence of Western Diet 西式饮食的消极影响

    28. Bad Influence of Western Diet 西式饮食的消极影响 ① The spread of Western eating habits around the world i ...

  5. 超全table功能Datatables使用的填坑之旅--1: 无法渲染表格数据: ajax调用了参数 : success

    问题:Datatables: 无法渲染表格数据 原因:datatables的ajax 传了"success":function(){},导致无法渲染数据. ajax 删掉" ...

  6. vc创建模态和非模态对话框

    模态对话框的创建 创建模态对话框需要调用CDialog类的成员函数:DoModal,该函数的功能就是创建并显示一个模 态对话框,关闭模态对话框的函数是EndDialog,该函数需要一个参数,这个参数就 ...

  7. C语言 fread()与fwrite()函数说明与示例

    1.作用 读写文件数据块. 2.函数原型 (1)size_t fread ( void * ptr, size_t size, size_t count, FILE * stream ); 其中,pt ...

  8. java web前端调试手段

    1.console.log() 2. jQuery.ajax({                     url:"/task1/com/guodiantong/servlet/JsonTo ...

  9. 两种方式创建支持SSH服务的docker镜像

    方法一:基于commit命令创建 1.首先,从docker的源中查看我们需要的镜像,本案例中使用Ubuntu作为基础镜像. # federico @ linux in ~ [16:57:38] $ s ...

  10. 曲演杂坛--使用TRY CATCH应该注意的一个小细节

    群里一个朋友遇到一个TRY CATCH的小问题,测试后发现是自己从来没有考虑的情况,写篇blog加深下印象 --============================================ ...