c#抛出异常中的substring函数

时间:2012-02-28 15:00:24

标签: c# string

我的字符串是delete filename(文件名),我会在运行时给出这个字符串是str3我只想要文件名(无论它的长度是多少)。这是我的代码:

int len = str3.Length;
string d = str3.Substring(6,len-1);// 6 for delete index and to get rest word is len -1
Console.Write(d);

但它给我一个例外。

4 个答案:

答案 0 :(得分:4)

Substring期望字符串其余部分的长度(即要抓取的字符数)。试试这个:

string d = str3.Substring(6, len-7);

编辑 - 正如CodeCaster提醒我的那样,如果你抓住字符串的整个剩余部分,则不需要包含长度。

string d = str3.Substring( 6 );

答案 1 :(得分:0)

由于你没有告诉我们异常是什么,我将假设它的长度小于子串起点。在你做之前

str3.Substring(6,len-6)

你应该先检查

if(str3.Length> 6)

所以它看起来像

int len=str3.Length;
if (str3.Length > 6)
    string d = str3.Substring(6,len-6);
Console.Write(d);

另请注意,它是len-6,因为它指的是计数,而不是最后一个索引。 String.Substring的第二个参数也不是必需的。默认情况下,它会转到String的末尾,因为您可以阅读here

答案 2 :(得分:0)

这样做

  str3.Substring(6,(len-6));

第二个参数是子字符串中的字符数,因此如果从索引6开始并且您想要在该点之后的所有内容,则将从长度中减去startindex。

答案 3 :(得分:0)

如果您只需要文件名,只需在System.IO命名空间中使用Path类的GetFileName方法:

string d = System.IO.Path.GetFileName(str3);