4

の文字列値があり/Images/She.jpgます。/images/ieの後の部分だけが欲しいShe.jpg。その部分を文字列に抽出する方法は?

4

6 に答える 6

5

パスを使用している場合は、他の回答を使用する必要があります。作業しているプレーン文字列のみの場合は、次のコードを使用できます。

string filePath = "/Images/She.jpg";
string fileName = filePath.Substring(filePath.LastIndexOf("/") + 1);
于 2013-08-16T15:36:42.250 に答える
0

以前に投稿された GetFileName の回答が気に入っています。

または、IndexOf と Substring を使用して手動で文字列を解析することもできます。文字列を解析する手順を簡単に確認できるように、複数の変数を含めました。

var source = "/images/she.jpg";
var key = "/images/";
var target = source.IndexOf(key);
var start = target + key.Length;
var length = source.Length - start;
var result = source.Substring(start, length);
于 2013-08-16T15:38:03.563 に答える
0

楽しみのために、文字列を配列に分割して、配列の最後の要素を取得することもできます...

string path = "/Images/She.jpg";
string[] arr = path.Split('/');
string filename = arr[arr.Length - 1];

または、ワンライナーを好む場合

string path = "/Images/She.jpg";
string filename = path.Split('/').Last();

これは戻ります

She.jpg
于 2013-08-16T18:43:38.507 に答える
0

ファイル名の後のクエリ パラメータなど、パスに複雑すぎるものがない限り、これは機能します。

Path.GetFileName("/Images/She.jpg")
于 2013-08-16T15:33:18.183 に答える
-1

さて、文字列の最後から後方に移動できます。

    private string GetFileName(string path)
    {
        string filename = null;

        for (int i = (path.Length - 1); i > -1; --i)
        {
            if (path[i].ToString() == "/")
            {
                for (int x = (i + 1); x < (path.Length); ++x)
                {
                    filename += path[x];
                }

                break;
            }
        }

        return (filename);
    }

これは、文字列の最後の文字から「/」に到達するまで逆方向に動作します。次に、「/」の後のすべての文字を合計して返します。

于 2013-08-16T15:38:55.770 に答える