我的字符串是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);
但它给我一个例外。
答案 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);