2016-11-14 7 views
0

特定のパターンがその文字列の中にある場合、文字列の一部を出力する関数を記述しようとしています。記号で囲まれた文字列の一部を抽出する

私は次を含む文字列の配列を持っている:

pages = ["|stackoverflow.com| The website serves as a platform for users to ask and answer questions." , "|reddit.com| A social news aggregation, web content rating, and discussion website"] 

ユーザーがurlReturn(pages,"platform")を入力すると、関数は出力stackoverflow.com

は、私が試している必要がありますが、無駄に、助けをいただければ幸いに!

+0

なぜ "stackoverflow.com" ではなく "reddit.com"? –

+0

"reddit.com"が保持されている場所ではなく、 "stackoverflow.com"が保持されている文字列に文字列 "platform"が表示されるため – Johny

答えて

0
var urlReturn = (pages, text) => pages.filter(page => page.indexOf(text) > -1).map(page => /\|([^|]*)\|/.exec(page)[1]) 

これらのことをMDNで調べることをお勧めします。正規表現やコレクションについては、いくつかの良い記事/文書があります。

pages = ["|stackoverflow.com| The website serves as a platform for users to ask and answer questions.", 
 
    "|reddit.com| A social news aggregation, web content rating, and discussion website", 
 
    "|lorem.com| Some site containing platform", 
 
    "|ipsum.com| Some site containing discussion" 
 
]; 
 

 
// returns the array containing multiple result 
 
function urlReturn(pages, query) { 
 
    var result = [] 
 
    pages.forEach(function(page) { 
 
    var match = (new RegExp('^\\|(.+?)\\|.*' + query + '.*', 'g')).exec(page); 
 
    if (match !== null) { 
 
     result.push(match[1]); 
 
    } 
 
    }); 
 

 
    return (result); 
 
} 
 

 
console.log(urlReturn(pages, "platform")); 
 
// ["stackoverflow.com", "lorem.com"] 
 

 
console.log(urlReturn(pages, "discussion")); 
 
// ["reddit.com", "ipsum.com"] 
 

 
console.log(urlReturn(pages, "rating")); 
 
// ["reddit.com"]

0
for (idx in pages) { 
    if (pages[idx].indexOf('platform') != -1) { 
     console.log(pages[idx].substr(1, pages[idx].indexOf('|', 1) - 1)) 
    } 
} 
0

次のコードを使用すると、複数の結果をカバーすることができますページはインデックスが見つかるまで配列されますquery引数を指定して、文字列"|"を区切り文字として使用して、インデックスの値を別の配列に分割し、この配列の2番目のインデックス[1]を返します。これには、探している部分文字列が含まれています。一致しない場合は、空の文字列を返します。

それが動作することを確認する:

function urlReturn(pages, query) { 
 
    for(var i = 0; i < pages.length; i++) { 
 
    if (pages[i].indexOf(query) > 0) { 
 
     return pages[i].split("|")[1]; 
 
    } 
 
    } 
 
    return ''; 
 
} 
 

 
var pages = [ 
 
    "|stackoverflow.com| The website serves as a platform for users to ask and answer questions." , 
 
    "|reddit.com| A social news aggregation, web content rating, and discussion website" 
 
]; 
 

 
console.log(urlReturn(pages, "platform"));

0

あなたが求める機能に簡単な解決策:

function urlReturn(pages, query) { 
    for(var i = 0; i < pages.length; i++) { 
    if (pages[i].indexOf(query) > 0) { 
     return pages[i].split("|")[1]; 
    } 
    } 
    return ''; 
} 

この関数は、検索

関連する問題