You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#中Substring方法触发超出范围异常的问题排查

问题出在Substring的参数理解上哦!

嘿,我来帮你捋清楚这个问题~你的代码抛出异常,核心原因是对Substring方法的参数用法搞错了:

问题分析

string.Substring(int startIndex, int length)的第二个参数是你要截取的字符串长度,而不是原字符串的总长度。你现在传了fl也就是整个路径的长度(83),但从索引47开始,剩下的字符长度只有83 - 47 = 36,传83远远超过了可用的字符数,自然会触发ArgumentOutOfRangeException异常。

修正方案

有两种简单的修正方式:

  1. 计算正确的截取长度:
int idx = file.LastIndexOf('\\');
int filenameLength = file.Length - idx;
string filename = file.Substring(idx, filenameLength);
  1. 直接省略第二个参数,Substring会自动从起始索引截取到字符串末尾:
int idx = file.LastIndexOf('\\');
string filename = file.Substring(idx);

更健壮的替代方法

其实不用自己手动截取,.NET已经提供了专门处理路径的工具类,用System.IO.Path.GetFileName(file)就能直接获取文件名,它会自动处理不同系统的路径分隔符,还能兼容路径末尾带\的特殊情况,比手动截取靠谱多啦!

内容的提问来源于stack exchange,提问作者user9470599

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.21 04:20:41