我的长度大于150个字符的字符串。我想删除前17个字符,剩下的就剩下了。我在ASP.net 4.5中使用Substring方法,但是我在str0收到错误消息:" System.ArgumentOutOfRangeException"。
public static string extract(string dirinfo)
{
Int32 lensub = Convert.ToInt32(dirinfo.Length);
string str0 = dirinfo.Substring(17, lensub);
return str0;
}
答案 0 :(得分:6)
Substring(int, int)
重载需要长度作为你想要的 rest 的第二个参数,而不是完整的字符串长度。
如果您的字符串长度为150,dirinfo.Substring(17, 150)
表示;
从17开始作为一个位置,在后需要150个字符。
这意味着,您的字符串至少需要167
字符 ,但事实并非如此。这就是你得到ArgumentOutOfRangeException
的原因。
string str0 = dirinfo.Substring(17);
描述;
从此实例中检索子字符串。子串从a开始 指定的字符位置并继续到字符串的末尾。
顺便说一下,Length
已经 int
,您无需解析它。
答案 1 :(得分:5)
你应该从len计算中删除常数17
public static string extract(string dirinfo)
{
Int32 lensub = Convert.ToInt32(dirinfo.Length);
string str0 = dirinfo.Substring(17, lensub-17);
return str0;
}
否则返回的所需字符数大于字符串的剩余长度
当然,(归功于answer from Soner Gönül)你可以简化你的方法
public static string extract(string dirinfo)
{
return (dirinfo.Length > 17 ? dirinfo.Substring(17) : "");
}
答案 2 :(得分:1)
string str0 = dirinfo.Substring(17, lensub-17);
return str0;
答案 3 :(得分:0)
我想删除第一个 17个字符,剩下的就剩下了。
然后完全按照自己的意愿行事
string str0 = dirinfo.Remove(0, 17);
参考:String.Remove Method (Int32, Int32)
public string Remove(int startIndex, int count)
返回一个新字符串,其中从指定位置开始的当前实例中指定数量的字符已已删除。