我有一个非常长的字符串,我想在该字符串中找到一个特定的子字符串。例如,这段是一个字符串,
"Sed ut perspiciatis unde omnis iste natus error sit voluptatem accusantium doloremque laudantium, totam rem aperiam, eaque ipsa quae ab illo inventore veritatis et quasi architecto beatae vitae dicta sunt explicabo. Nemo enim ipsam voluptatem quia voluptas sit aspernatur aut odit aut fugit, sed quia consequuntur magni dolores eos qui ratione voluptatem sequi nesciunt. Neque porro quisquam est, qui dolorem ipsum quia dolor sit amet, consectetur, adipisci velit, sed quia non numquam eius modi tempora incidunt ut labore et dolore magnam aliquam quaerat voluptatem. Ut enim ad minima veniam, quis nostrum exercitationem ullam corporis suscipit laboriosam, nisi ut aliquid ex ea commodi consequatur? Quis autem vel eum iure reprehenderit qui in ea voluptate velit esse quam nihil molestiae consequatur, vel illum qui dolorem eum fugiat quo voluptas nulla pariatur?"
我有一个子串"natus"
。我想要实现的是剪切整个段落并返回一个字符串,其中包含"natus"
之前的前20个字符和后面的20个字符。所以从上面的段落输出将是
"tis unde omnis iste natus error sit voluptate"
我怎样才能在jquery中这样做?谢谢。
答案 0 :(得分:4)
答案 1 :(得分:0)
我不想为它编写代码,但我会使用IndexOf
来确定搜索字符串的首次出现,这将返回一个整数 - 索引。在此index
上,您可以执行-20和+20(+搜索字符串长度),并在javascript中使用slice()
。不需要jQuery。
只需检查您的起始编号是否至少为0,结束编号不会大于整个文本。
答案 2 :(得分:0)
您正在寻找.indexOf(),而不是正则表达式:
var someText = 'your praragraph'; // this is your paragraph
var lookFor = 'natus';
var occurence = someText.indexOf(lookFor); // Here we find the first occurence
var offset = 20; // Hoe much do we want before and after
// calculate start, check if not lower than 0 (no negative values)
var start = occurence-offset < 0 ? 0 : occurence - offset ;
console.log( someText.substr(start, offset*2+lookFor.length) ); substr(start, length)
为什么不使用正则表达式?因为你应该总是喜欢字符串操作中的正则表达式之上的字符串函数。
一个jsFiddle Demo:)
答案 3 :(得分:0)
你可以将带有正字段的第一个分区放入两个段中,然后去拦截这两个段是字符串