0

のような URL がhttp://xxx.xxx.xxx/mls/pmmls/12/-8/53/6/12-8536_2.jpg/t1349940727/100x100/ あり、" のような URL からファイル名のみを取得する必要があります。12-8536_2.jpg"

url format is dynamic. Filename with extension must be in url. but it filename with extension  may not be in last position of url

Path.GetFileName() を試しましたが、「」が表示されます。

このタイプのURLのファイル名を抽出する方法を知っている人はいますか?

4

5 に答える 5

1

URL のどの部分もファイルにマップされるという保証はないため、URL でFileNameを取得しようとしても意味がありません。

于 2012-11-05T09:49:34.290 に答える
0

.jpg、.png、.gif などの拡張子のリストを定義する必要があります (想定しているすべてのファイル タイプ)。

URL を文字列に変換し (まだ変換されていない場合)、拡張機能のインデックスを探します。これで、ファイル名の位置と、ファイル名があるかどうかがわかります。ファイル名の後のすべてを削除します。

"/" トークンを見つけ、"/" の前 (および含む) の部分を削除し、"/" が見つからなくなるまでこれを繰り返します (たとえば、while 関数を使用)。

これを行う方法の詳細については、ここで見つけることができます

于 2012-11-05T10:18:27.370 に答える
0

ファイル名の後に常に2つのセグメントが続くことがわかっている場合(例では、t1349940727および100x100)、次のことができます

var input =
    "http://xxx.xxx.xxx/mls/pmmls/12/-8/53/6/12-8536_2.jpg/t1349940727/100x100/";
var uri = new Uri(input);
var fileName = uri.Segments[uri.Segments.Length - 3];

それがわからない場合は、他の人が言ったように、どの部分がファイル名であるかを簡単に判断する方法はありません. あなたは試すことができます

var fileName = url.Segments.Last(seg => seg.Contains("."));

ドットを含む最後のセグメントを取得します。

于 2012-11-05T10:14:03.140 に答える
0

12-8536_2.jpg はその URL のファイルではないようです。いずれにせよ、URL の「ファイル名」が常に .jpg である場合は、URL を文字列 (またはAS文字列) と正規表現に出力できます。

string filename = Regex.Match(URL,@"\/([A-Za-z0-9\-._~:?#\[\]@!$%&'()*+,;=]*).jpg").Groups[1].Value

編集:これは、特定のファイルのプレビュー サイズが異なるサイト用だと思います。次のように、さまざまな拡張子を指定することもできます (例)。

string filename = Regex.Match(URL,@"\/([A-Za-z0-9\-._~:?#\[\]@!$%&'()*+,;=]*)(.jpg|.JPG|.jpeg|.JPEG)").Groups[1].Value
于 2012-11-05T10:17:08.163 に答える
0
static string getFileName(string url) {
    string[] arr = url.Split('/');
    return arr[arr.Length - 1];
}
于 2016-08-28T22:25:59.533 に答える