【发布时间】:2013-08-19 01:49:10
【问题描述】:
我有一个字符串值为/Images/She.jpg。我只想要/images/ 之后的部分,即She.jpg。如何将该部分提取到字符串中?
【问题讨论】:
我有一个字符串值为/Images/She.jpg。我只想要/images/ 之后的部分,即She.jpg。如何将该部分提取到字符串中?
【问题讨论】:
string filename = System.IO.Path.GetFileName("/Images/She.jpg");
【讨论】:
path 是正确的。
System.IO.Directory.Delete
如果您正在使用路径,则应使用其他答案。如果它只是您正在使用的纯字符串,则可以使用以下代码:
string filePath = "/Images/She.jpg";
string fileName = filePath.Substring(filePath.LastIndexOf("/") + 1);
【讨论】:
Path 类。如果给你的文件是相对于当前目录的,比如"She.jpg",这里会发生什么?
只要您的路径中没有任何太复杂的东西,这将起作用,例如文件名后面的查询参数。
Path.GetFileName("/Images/She.jpg")
【讨论】:
我喜欢之前发布的 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);
【讨论】:
为了好玩,你还可以将字符串拆分成一个数组,然后获取数组中的最后一个元素...
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
【讨论】:
嗯,你可以从字符串的末尾向后移动。
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);
}
这从字符串的最后一个字符向后工作,直到它遇到'/'。然后,它将“/”后面的所有字符相加并返回给您。
【讨论】: