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

处理字符串重复字符添加分隔符时出现索引越界异常,求问题原因

问题分析与修复方案

嘿,这个索引越界的问题我帮你捋得明明白白!你遇到的Index out of range exception根源完全在循环的边界处理上:

当你的for循环条件写的是i < res.Length时,i会从0一直跑到res.Length - 1(也就是最后一个字符的索引)。这时候你去访问res[i + 1],就相当于碰了res[res.Length]这个位置——而字符串/数组的合法索引范围是从0到Length-1,这个位置根本不存在,自然就抛出异常了。

修复后的代码

我们只需要把循环的终止条件改成i < res.Length - 1,让i只遍历到倒数第二个字符,这样i+1就始终是有效的索引。另外,最后别忘了把最后一个字符补到结果里,不然会漏掉:

string t = "";
for (int i = 0; i < res.Length - 1; i++) {
    t += res[i];
    if (res[i] == res[i + 1]) {
        t += 'x';
    }
}
// 处理空字符串的情况,避免再次触发索引越界
if (res.Length > 0) {
    t += res[res.Length - 1];
}

额外优化建议(可选)

如果你的目标字符串很长,频繁用+=拼接会创建大量临时字符串对象,效率很低。可以改用StringBuilder来提升性能:

StringBuilder t = new StringBuilder();
for (int i = 0; i < res.Length - 1; i++) {
    t.Append(res[i]);
    if (res[i] == res[i + 1]) {
        t.Append('x');
    }
}
if (res.Length > 0) {
    t.Append(res[res.Length - 1]);
}
string result = t.ToString();

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.12 04:01:24