0

如何在内容部分与模式匹配的页面中返回第一页的 url 部分(以函数 1 的样式,不区分大小写)但如果找不到页面则返回空字符串?

例如

url1(pages,"GREAT") 返回 "www.xyz.ac.uk"

url1(pages,"xyz") 返回 ""

到目前为止,这是我的代码:

var pg = [ "|www.cam.ac.uk|Cambridge University offers degree programmes and world class research." , "!www.xyz.ac.uk!An great University" , "%www%Yet another University" ];
var pt = "great";

function url1(pages, pattern) {
    var result = "";
    for (x in pages) {
        current = pages[x].split(pattern);
        result = current[1];
    }
    return result;
}

alert(url1(pg, pt));
4

2 回答 2

2

试试这个:

var pg = [ "|www.cam.ac.uk|Cambridge University offers degree programmes and world class research." , "!www.xyz.ac.uk!An great University" , "%www%Yet another University" ];

function find(pages, pattern) {
  var i, l, page, arr;
  pattern = pattern.toLowerCase();
  for(i=0, l=pages.length; i<l; i++) {
    page = pages[i];
    arr = page.split(page[0]);
    if(arr.slice(2).join(page[0]).toLowerCase().indexOf(pattern) >=0) {
      return arr[1];
    }
  }
  return '';
}

console.log(find(pg,'great')); // 'www.xyz.ac.uk'
console.log(find(pg,'xyz')); // ''

在这里摆弄:http: //jsbin.com/uGebeQi/2/edit

于 2013-11-09T22:29:32.660 回答
0

这是使用正则表达式的另一种解决方案。我觉得这比盲目地分割第一个字符要好一些,因为内容也总是可以包含第一个字符。

注意:已接受的答案已更正。

function url1(pages, pattern) {
    var rx = /^(.)(.+?)\1(.+)/,
        i = 0,
        len = pages.length,
        matches;

    for (; i < len; i++) {
        if ((matches = pages[i].match(rx)) && matches[3].indexOf(pattern) !== -1) 
            return matches[2];
    }

    return '';
}

//www.xyz.ac.uk
url1(['!www.xyz.ac.uk!An great University! The best in the world!'], 'best');

pattern如果您想要不区分大小写的搜索,您始终可以将 和 内容小写。

于 2013-11-09T22:48:48.563 回答