C#中发生System.ArgumentOutOfRangeException

时间:2017-01-24 16:04:44

标签: c#

我正在尝试从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”类型异常

我该如何解决这个问题?

7 个答案:

答案 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);