0

コンテンツが単なるテキストであるか、画像の URL であるかを文字列で検出するために検索します。ファイルタイプに基づいて検出していますが、複数のファイルタイプを検出する方法がわかりません…</p>

var wrapper = (content.indexOf(".jpg", ".jpeg", ".gif", ".png", ".bmp") != -1)
                ? '<img src="' + content + '" />'
                : '<span>' + content + '</span>';

indexOf のこの構文が間違っていることは知っていますが、理想的には、それが私が検索するものです!

4

2 に答える 2

1

配列に対してindexOfを使用するだけです

var wrapper = ([".jpg", ".jpeg", ".gif", ".png", ".bmp"].indexOf(content.slice(-4)) > -1)
                ? '<img src="' + content + '" />'
                : '<span>' + content + '</span>';

content.slice(-4)の最後の4文字を返すcontent

古いブラウザでは、のポリフィルを使用する必要があります。https:indexOf //developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/indexOfを
参照してください。

于 2013-01-21T13:35:20.453 に答える
1

私はよりクリーンなソリューションを使用します-スライス/インデックスオブなどは関係ありません.ext配列のすべての要素をコンテンツに対してテストし、一致する要素を返します。一致するのは 1 つだけであるため、最初の要素を確認するだけで済みます。

var content = "/test.png",
    ext = [".jpg", ".jpeg", ".gif", ".png", ".bmp"],
    res,wrapper;

res = ext.filter(function(el){return content.match(el)});

wrapper = res[0] ? '<img src="'+content+'" />' : '<span>'+content+'</span>';

詳細については、MDN の Array.prototype.filter を参照してください。. /test.png.jpgファブリツィオのソリューションと同様に、ファイル名に複数のファイル名がある場合(理由が何であれ)、このソリューションも壊れる可能性があります。

于 2013-01-21T13:48:32.117 に答える