2011-11-03 2 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

私は混乱しています。あなたはあなたが使うと言った。 seperatorとして、しかしあなたのフォーマットはurl | contentです。それはURLでなければなりません;コンテンツ?また、u_c_pagesの2番目の要素にaがありません。 – arviman

+0

あなたのコードの3行目に二重引用符がないほど簡単なのでしょうか? –

+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( ";")を使用すると、文字列をセグメントに分割できます。パラメータはセパレータです。

関連する問題