我正在尝试从C#
中的网址中提取文件的名称我使用的代码如下:
string url = "https://something.something.something/something/filename.abc");
// the filename in this case should be filename.abc
int firstIndex = url.lastIndexOf('/');
int length = url.Length - url.lastIndexOf('/');
string filename = url.Substring(firstIndex, length);
Console.WriteLine("The name of the file is : " + filename);
但是,这会打印以下内容: 该文件的名称是:/filename.abc
我想将文件名作为filename.abc 所以我做了这个
int firstIndex = url.lastIndexOf('/') + 1;
// All the other code remains the same, and this is when the visual studio throws this error
mscorlib.dll中出现未处理的“System.ArgumentOutOfRangeException”类型异常
我该如何解决这个问题?
答案 0 :(得分:6)
var uri = new Uri("https://something.something.something/something/filename.abc");
var f = uri.Segments[uri.Segments.Length - 1];
或(通过this)
func login(username: String, password: String) -> Resource {
return self.resource("login").withParam("username", username).withParam("password", password);
}
答案 1 :(得分:3)
您可以这样做以获取文件名。
kzas,kzws = lgw(n)
for kta,ktw, in zip(kzas,kzws):
for kza,kzw in zip(kzas,kzws):
fval = integrand(kza,kta)
wghtx = kzw*numpy.exp(kza)
wghty = ktw*numpy.exp(kta)
integral += wghtx*wghty*fval
答案 2 :(得分:0)
你的长度参数是从开头到最后的长度/。那不行。你可以尝试:
include(CTest)
答案 3 :(得分:0)
您还需要递减length
变量:
int firstIndex = url.LastIndexOf('/') +1;
int length = url.Length - url.LastIndexOf('/')-1;
或者使用只接受起始参数的Substring(int)覆盖并读取从起点到终点的所有内容:
string filename = url.Substring(firstIndex);
答案 4 :(得分:0)
只需使用此 -
using System.IO;
string url = "https://something.something.something/something/filename.abc";
string filename = Path.GetFileName(url);
Console.WriteLine("The name of the file is : " + filename);
答案 5 :(得分:0)
通过将firstIndex增加1而不将长度变量调整为-1,可以将子字符串窗口滑过字符串的末尾。
在第三行代码的末尾添加一个-1。
答案 6 :(得分:0)
这将为您提供带扩展名的文件名,而不包含前面的斜杠:
var filename = url.Substring(url.LastIndexOf('/') + 1);