2011-11-03 76 views
0

我正在编写一个使用“;”的程序作为分隔符并在搜索内容之前提取URL。在JS中使用分隔符

所以它的格式是:

name;surname 

在寻找给定的阵列......我决定去阵列加倍努力和测试没有“;”但是这个计划混淆了 - 它不知道“;”位置了,这引发了一个扳手的作品!

这是我的代码,迄今为止 - 非常感谢提前!

pages = 
     [ 
     "The first", "An;alternative;page", "Yet another page" 
     ] 

    u_c_pages = 
     [ 
     "www.cam.ac.uk;"+pages[0] 
     , 
     "www.warwick.ac.uk"+pages[1] 
     , 
     "www.kcl.ac.uk;"+pages[1] 
     , 
     "www;"+pages[2] 
     ] 

    var pattern5 = prompt('5) Please enter a search term:'); 

    function url1_m1(u_c_pages,pattern) 
    { 

     var seperator = []; 
     var seperatorPos = []; 

     if(pattern) 
     { 
      for (var i = 0; i < u_c_pages.length; i++) 
       { 

        var found = true; 
        if((u_c_pages[i].indexOf(";"))<0) 
         { 
         found=false; 
         } 
        else 
         { 
         seperator[seperator.length] = i; 
         seperatorPos[seperatorPos.length] = (u_c_pages[i].indexOf("|")); 
         } 
       } 
       if(seperator.length==0) 
         { 
         return("Nothing found!"); 
         } 
       else 
       var found2 = ""; 
       { 
       for (var j = 0; j < seperator.length; j++) 
         { 
         if(u_c_pages[j].substring(seperatorPos[j],u_c_pages[j].length-1).toLowerCase().indexOf(pattern.toLowerCase()) >= 0) 
          { 
          found2 = (u_c_pages[j].substring(0,seperatorPos[j])); 
          break; 
          } 
         } 
       return(found2) 
       } 
     } 
     else 
     { 
     // only returned when the user decides to type in nothing 
      return("Nothing entered!"); 
     } 
    } 
    alert(url1_m1(u_c_pages,pattern5)); 
+0

我很困惑。你说你用了;作为分隔符,但是你的格式是url |内容。不是它应该是网址;内容?您的u_c_pages中的第二个元素也缺少a; – arviman

+0

是否可能如此简单,因为您的代码的第三行中缺少双引号? –

+0

抱歉大家我已经更新了代码 – methuselah

回答

1

享受正则表达式的威力:

on JSFiddle

pages = ["The first", "An;alternative;page", "Yet another page"]; 

u_c_pages = [ 
    "www.lboro.ac.uk;"+pages[0], 
    "www.xyz.ac.uk;"+pages[1], 
    "www.xyz.ac.uk;"+pages[1], 
    "www;"+pages[2] 
]; 

var pattern5 = prompt('5) Please enter a search term:'); 

function url1_m1(u_c_pages,pattern) 
{ 
    // escape search pattern 
    pattern = pattern.toLowerCase().replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&') 
    pattern = new RegExp('^([^;]+);.*?' + pattern, 'i'); 

    var result = null; 

    for(var i=0;i<u_c_pages.length;i++) { 
    if((result = u_c_pages[i].match(pattern))) { 
     return result[1]; 
    } 
    } 

    return false; 
} 
alert(url1_m1(u_c_pages,pattern5)); 
1

您可以使用String.split(“;”)将字符串拆分为段。该参数是分离器。