首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何替换给定字符串前后除100个字符以外的所有字符?

如何替换给定字符串前后除100个字符以外的所有字符?
EN

Stack Overflow用户
提问于 2019-06-03 06:39:33
回答 2查看 56关注 0票数 3

我正在尝试过滤一组数据,并且我必须处理多个~5000字符条目。

我需要的是一些keyword前后的100个字符。

我研究了用于搜索和替换的正则表达式代码,但只找到一个keyword的函数,而不是周围的字符。

示例输入:

代码语言:javascript
复制
abc123cde345fgh678ijk910keywordbc123cde345fgh678ijk910

包含+-5字符的所需输出:

代码语言:javascript
复制
jk910keywordbc123
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2019-06-03 06:46:15

匹配100个字符,后跟关键字,然后再匹配100个字符:

代码语言:javascript
复制
const str = 'abc123cde345fgh678ijk910keywordbc123cde345fgh678ijk910';
const match = str.match(/.{5}keyword.{5}/);
console.log(match[0]);

如果您需要动态构建模式,那么:

代码语言:javascript
复制
const str = 'abc123cde345fgh678ijk910keywordbc123cde345fgh678ijk910';
const keyword = 'keyword';
const pattern = new RegExp(`.{5}${keyword}.{5}`);
const match = str.match(pattern);
console.log(match[0]);

如果模式在正则表达式中可能包含具有特殊含义的字符,如$,则在传递给new RegExp之前,请确保首先对它们进行转义

代码语言:javascript
复制
// https://stackoverflow.com/questions/3561493/is-there-a-regexp-escape-function-in-javascript
const escape = s => s.replace(/[-\/\\^$*+?.()|[\]{}]/g, '\\$&');

const str = 'abc123cde345fgh678ijk910keyw$ordbc123cde345fgh678ijk910';
const keyword = 'keyw$ord';
const pattern = new RegExp(`.{5}${escape(keyword)}.{5}`);
const match = str.match(pattern);
console.log(match[0]);

票数 3
EN

Stack Overflow用户

发布于 2019-06-03 10:12:01

针对此问题的一种解决方案可以使用String.indexOf()搜索输入string中的keyword的索引,然后使用String.slice()获取特定半径之间的字符。

代码语言:javascript
复制
const str = 'abc123cde345fgh678ijk910keywordbc123cde345fgh678ijk910';

const getKeyword = (str, keyword, radius) =>
{
    let idx = str.indexOf(keyword);
    return str.slice(idx - radius, idx + keyword.length + radius);
}

console.log(getKeyword(str, "keyword", 5));
console.log(getKeyword(str, "keyword", 15));
console.log(getKeyword(str, "keyword", 1000));
代码语言:javascript
复制
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}

注当radius大于可能的最大值时,这也会起作用,在本例中返回整个字符串。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56419464

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档