我有一个字符串,一个要搜索的单词数组:
strng = "I have been working here since last six months"
text = ["since", "till", "until"]
result = "since"
我想搜索数组中的每个单词,在strng
字符串中找到任何单词时,必须将其分配给结果。怎么做?
我正在使用.search()
搜索单个单词,但是如何搜索多个单词?请帮忙。
我是新手。
我有一个字符串,一个要搜索的单词数组:
strng = "I have been working here since last six months"
text = ["since", "till", "until"]
result = "since"
我想搜索数组中的每个单词,在strng
字符串中找到任何单词时,必须将其分配给结果。怎么做?
我正在使用.search()
搜索单个单词,但是如何搜索多个单词?请帮忙。
我是新手。
您可以遍历关键字数组或使用正则表达式。前者简单,后者更优雅;-)
您的正则表达式应该类似于“/since|till|until/”,但我现在还不能 100% 确定。如果您打算使用正则表达式,您应该研究一下它们,这是一个入门:http ://www.w3schools.com/js/js_obj_regexp.asp
编辑:刚刚尝试过并刷新了我的记忆。最简单的解决方案是使用 .match(),而不是 search()。它归结为一个单行然后:
strng.match(/since|till|until/) // returns ["since"]
使用 .match() 为您提供了一个包含所有模式出现的数组,在这种情况下,第一个也是唯一的匹配是该数组的第一个元素。
我认为正则表达式是解决这个问题的简单方法。使用 match() 而不是 search()。
如果你把它写成,
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,]
正确的解决方案是写,
result=strng.match(text)[0];
text
您可以像.search()
这样遍历每个项目
for (var i=0; i < text.length; i++)
{
if (-1 != strng.search(text[i]))
{
result = text[i];
break;
}
}
像这样做...
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]);
}
要使 indexOf 在 IE 中工作,请将此代码放入您的脚本中
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;
};
}
你可以这样做:
var result;
for(var x = 0; x < text.length; x++){
if(strng.indexOf(text[x]) > -1){
result = text[x];
break;
}
}
alert(result);
这里的工作示例:http: //jsfiddle.net/j5Y5d/1/