9

I have a string, an array of words to be searched for:

strng = "I have been working here since last six months"
text = ["since", "till", "until"]
result = "since"

I want to search for every word in array, in strng and when any of it is found in the strng, it must be assigned to result. how to do it?
I am using .search() for searching a single word, but how to search for multiple words? please help.
I am a Newbie.

5 Answers 5

14

You can either loop over your array of keywords or use a regular expression. The former is simple, the latter is more elegant ;-)

Your regex should be something like "/since|till|until/", but I'm not 100% sure right now. You should research a bit about regexes if you're planning to use them, here's a starter: http://www.w3schools.com/js/js_obj_regexp.asp

EDIT: Just tried it and refreshed my memory. The simplest solution is using .match(), not search(). It's boils down to a one-liner then:

strng.match(/since|till|until/) // returns ["since"]

Using .match() gives you an array with all occurrences of your pattern, in this case the first and only match is the first element of that array.

Sign up to request clarification or add additional context in comments.

Comments

3

I think regular expression is the simple solution for that. Use match() instead of search().

if you write it as,

strng = "I have been working here since last six months"
text = /(since)|(till)|(here)/
result= strng.match(text); // result will have an array [since,since,]

correct solution is to write,

result=strng.match(text)[0];

Comments

1

You can loop through each item in text with .search() like this

for (var i=0; i < text.length; i++)
{
   if (-1 != strng.search(text[i]))
   {
      result = text[i];
      break;
   }
}

Comments

1

Do it like this...

strng = "I have been working here since last six months";
text = ["since", "till", "until"];
results = [];   // make result as object

     for(var i=0; i<=text.length; i++){
          if(strng.indexOf(text[i]) != -1)
             results.push(text[i]);
     }

To make indexOf work in IE, put this code in your script

if (!Array.prototype.indexOf) {

    Array.prototype.indexOf = function(obj, start) {
         for (var i = (start || 0), j = this.length; i < j; i++) {
             if (this[i] === obj) { return i; }
         }
         return -1;
    };

}

Comments

0

You can do like this:

var result;
for(var x = 0; x < text.length; x++){
    if(strng.indexOf(text[x]) > -1){
        result = text[x];
        break;
    }
}
alert(result);

working example here: http://jsfiddle.net/j5Y5d/1/

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.