js 保留字符串中的关键字前后两个字符其他内容用省略号显示
<!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 保留字符串中的关键字前后两个字符其他内容用省略号显示的更多相关文章
- 怎么用JS截取字符串中第一个和第二个字母间的部分?
一.JS中用正则判断字符串是否有匹配正则的字符串部分,格式如下: /[a-zA-Z](.*?)[a-zA-Z]/.test('1a123d45678901a2') “.test”前面的部分是正则表达式 ...
- js判断输入字符串长度(汉字算两个字符,字母数字算一个)
js判断输入字符串长度(汉字算两个字符,字母数字算一个) 文本输入时,由于数据库表字段长度限制会导致提交失败,因此想到了此方法验证. 废话不多说上代码: <html> <head&g ...
- js字符串长度计算(一个汉字==两个字符)和字符串截取
js字符串长度计算(一个汉字==两个字符)和字符串截取 String.prototype.realLength = function() { return this.replace(/[^\x00-\ ...
- js去除字符串中的标签
var str="<p>js去除字符串中的标签</p>"; var result=str.replace(/<.*?>/ig,"&qu ...
- 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有相关 ...
- js去掉字符串中的所有空格
1.使用js去掉字符串中的所有空格 1.1.定义一个去空格函数方法 function Trim(str,is_global){ var result; result = str.replace(/(^ ...
- JS去除字符串中的中括号
var str = '这是一个字符串[html]语句;[html]字符串很常见'; alert(str.replace(/\[|]/g,''));//移除字符串中的所有[]括号(不包括其内容) //输 ...
- 《Python CookBook2》 第一章 文本 - 过滤字符串中不属于指定集合的字符 && 检查一个字符串是文本还是二进制
过滤字符串中不属于指定集合的字符 任务: 给定一个需要保留的字符串的集合,构建一个过滤函数,并可将其应用于任何字符串s,函数返回一个s的拷贝,该拷贝只包含指定字符集合中的元素. 解决方案: impor ...
- C#计算字符串长度,汉字算两个字符
在C#中的字符串类String中,有个Length属性表示字符串的长度,但该字段返回的是字符的个数,如果字符串中含有中文字符的话,一个汉字占用两个字符的长度,此时获取的长度就不够精确,当然也看具体业务 ...
随机推荐
- 网站SEO优化的方法
网站SEO优化的方法: 1.url静态化和规范化:url中都去掉了index.php这样的后缀网址形式,目的就是让网站的层级更浅,获得的权重更高 代码中可以使用urlrewrite重写. 2.域名30 ...
- 2018.08.20 loj#117. 有源汇有上下界最小流(模板)
传送门 这题真有意思... 先是有一个点T的我怀疑人生. 然后学大佬们封装了我的dinic就莫名其妙的过了??? 所以说锅给谁好呢? 给dinic吧... 解法就是先求出一段可行流,然后从t到s加一条 ...
- Can not find the tag library descriptor for "/struts-tags"`
1.查看struts.xml路径是否错误,要放在src下, 2.缺少struts-tags.tld (1)查找方式: (2)找到此包,然后右键用解压缩文件打开. (3)然后你会看到很多的源码,找到红圈 ...
- Caused by: java.lang.IllegalArgumentException: error at ::0 can't find referenced pointcut aaa
这个错误是说,找不到这个注释: 解决方案: 1.更改自己本机的jdk版本(我的更改了无效): 在工程选择框内点击右键--->build path----->Library--->ad ...
- b2_trsd_EDSD_new
# -*- coding:utf-8 -*- import re ss="./data/" year = '17A' filename = ss+'EDSD%s.txt'%year ...
- post异步请求
//创建url NSURL *url = [[NSURL alloc] initWithString:@"http://api.hudong.com/iphonexml.do"]; ...
- tar、7z(7zip)压缩/解压缩指令的使用
本文介绍tar.7z指令的使用方法 tar指令 在Linux中,使用的最多的压缩/解压缩指令就是tar指令了. tar指令用来将多个文件/目录结构打包.在实际使用中,往往使用tar对压缩的支持,即同时 ...
- Hdu1427 速算24点 2017-01-18 17:26 46人阅读 评论(0) 收藏
速算24点 Time Limit : 2000/1000ms (Java/Other) Memory Limit : 65536/32768K (Java/Other) Total Submiss ...
- IDEA14添加SVN
今天升级IDEA14,发现SVN变了,折腾了好一会才搞好.记录一下,希望其他人能少走弯路.主要是IDEA14的svn是用命令行工具进行操作,这样对以后SVN的兼容性也会好很多,这个在他们官方的博客上也 ...
- Oracle EBS标准错误信息如何追踪 (Debug)
http://www.cnblogs.com/songdavid/articles/2067534.html 调用EBS标准API的时候,可能会返回一些让人看不懂的错误,比如最近我在开发rcv_tra ...