Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/35.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何从路径中提取文件名_C#_Asp.net_.net_String - Fatal编程技术网

C# 如何从路径中提取文件名

C# 如何从路径中提取文件名,c#,asp.net,.net,string,C#,Asp.net,.net,String,我有一个字符串值,它是/Images/She.jpg。我只想要/images/后面的部分,即She.jpg。如何将该部分提取到字符串中?只要路径中没有太复杂的内容,例如文件名后的查询参数,就可以了 string filename = System.IO.Path.GetFileName("/Images/She.jpg"); Path.GetFileName("/Images/She.jpg") 如果使用路径,则应使用其他答案。如果只是一个普通字符串,您可以使用以下代码: string fi

我有一个字符串值,它是
/Images/She.jpg
。我只想要
/images/
后面的部分,即
She.jpg
。如何将该部分提取到字符串中?

只要路径中没有太复杂的内容,例如文件名后的查询参数,就可以了

string filename = System.IO.Path.GetFileName("/Images/She.jpg");
Path.GetFileName("/Images/She.jpg")

如果使用路径,则应使用其他答案。如果只是一个普通字符串,您可以使用以下代码:

string filePath = "/Images/She.jpg";
string fileName = filePath.Substring(filePath.LastIndexOf("/") + 1);

我喜欢之前发布的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);

你可以从绳子的末端向后移动

    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);
    }
private string GetFileName(字符串路径)
{
字符串文件名=null;
for(inti=(path.Length-1);i>-1;--i)
{
如果(路径[i].ToString()=“/”)
{
对于(整数x=(i+1);x<(路径长度);+x)
{
文件名+=路径[x];
}
打破
}
}
返回(文件名);
}

这从字符串的最后一个字符开始向后工作,直到它碰到“/”为止。然后,它将“/”后面的所有字符相加并返回给您。

为了好玩,您还可以将字符串拆分为一个数组,并获取数组中的最后一个元素

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

您能告诉我如何删除该文件吗?当然,您可以使用方法删除它。不过,请确保
路径
正确。这样它就不会删除fodler了?它只删除该文件夹中的文件?抱歉,只是一点小混乱。是的,它只会删除文件,如果要删除文件夹,则需要使用
System.IO.Directory.delete
多么复杂的方法。即使在处理纯字符串时,也应该使用
Path
类。如果提供给您的文件是相对于当前目录的,例如
“She.jpg”
,这里会发生什么?