4

我有一个字符串值为/Images/She.jpg. 我只想要/images/ie之后的部分She.jpg。如何将该部分提取到字符串中?

4

6 回答 6

16
string filename = System.IO.Path.GetFileName("/Images/She.jpg");
于 2013-08-16T15:31:20.283 回答
5

如果您正在使用路径,则应使用其他答案。如果它只是您正在使用的纯字符串,则可以使用以下代码:

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

这将起作用,只要您的路径中没有任何太复杂的内容,例如文件名后的查询参数。

Path.GetFileName("/Images/She.jpg")
于 2013-08-16T15:33:18.183 回答
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 回答
-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 回答