Remove string after predefined string

2019-02-12 10:52发布

问题:

I am pulling content from an RSS feed, before using jquery to format and edit the rss feed (string) that is returned. I am using replace to replace strings and characters like so:

var spanish = $("#wod a").text();
var newspan = spanish.replace("=","-");
$("#wod a").text(newspan);

This works great. I am also trying to remove all text after a certain point. Similar to truncation, I would like to hide all text starting from the word "Example".

In this particular RSS feed, the word example is in every feed. I would like to hide "example" and all text the follows that word. How can I accomplish this?

回答1:

Though there is not enough jQuery, you even don't need it to remove everything after a certain word in the given string. The first approach is to use substring:

var new_str = str.substring(0, str.indexOf("Example"));

The second is a trick with split:

var new_str = str.split("Example")[0];


回答2:

If you also want to keep "Example" and just remove everything after that particular word, you can do:

var str = "aaaa1111?bbb&222:Example=123456",
    newStr = str.substring(0, str.indexOf('Example') + 'Example'.length);

// will output: aaaa1111?bbb&222:Example


回答3:

jQuery isn't intended for string manipulation, you should use Vanilla JS for that:

newspan = newspan.replace(/example.*$/i, "");

The .replace() method accepts a regular expression, so in this case I've used /example.*$/i which does a case-insensitive match against the word "example" followed by zero or more of any other characters to the end of the string and replaces them with an empty string.



回答4:

I would like to hide all text starting from the word "Example"

A solution that uses the simpler replace WITH backreferences so as to "hide" everything starting with the word Example but keeping the stuff before it.

var str = "my house example is bad"
str.replace(/(.*?) example.*/i, "$1")     // returns "my house"
// case insensitive. also note the space before example because you 
// probably want to throw that out.