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

从字符串第8位截取至末尾遇System.ArgumentOutOfRangeException错误求助

解决String.Substring触发ArgumentOutOfRangeException的问题

嘿,这问题我之前也踩过坑!咱们一步步来捋清楚:

错误根源

首先要明确:.NET里字符串的索引是从0开始计数的,你说的“第8个字符”,对应的实际索引是7,不是8!另外,如果你的字符串总长度小于等于8,直接用Substring(8)肯定会触发这个异常——因为索引8根本不在字符串的有效范围内。

咱们看你的三个字符串:

  • Hrvatska ima more:字符数(含空格)肯定大于8,没问题;
  • 但如果有字符串长度刚好是8或者更短,那索引8就超出范围了,直接触发报错。

修复方案

方案1:修正起始索引(针对确定长度足够的字符串)

如果确认所有目标字符串长度都大于8,直接把起始索引改成7(对应第8个字符):

string s1 = "Hrvatska ima more";
string s2 = "Italija je prvak svijeta";
string s3 = "Hrvatska je prvak svijeta";

// 截取第8个字符到末尾(索引7开始)
string result1 = s1.Substring(7);
string result2 = s2.Substring(7);
string result3 = s3.Substring(7);

方案2:增加安全检查(兼容短字符串)

如果不确定字符串长度,先判断再截取,避免异常:

string GetSubstringFrom8thChar(string input)
{
    // 如果字符串长度不足8,直接返回原字符串或空串,可根据需求调整
    if (input.Length <= 7)
        return input;
    // 从索引7开始截取到末尾
    return input.Substring(7);
}

// 使用示例
string result1 = GetSubstringFrom8thChar(s1);
string result2 = GetSubstringFrom8thChar(s2);
string result3 = GetSubstringFrom8thChar(s3);

额外说明

如果你用的是Substring(startIndex, length)重载,还要确保startIndex + length不超过字符串总长度,但你这里是截取到末尾,用单参数的Substring(startIndex)就够了,只要startIndex小于字符串长度就不会报错。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.19 06:23:21