如何用for循环和if语句返回字符串数组指定索引区间的所有子串?
解决字符串数组索引范围子串提取问题
原代码存在的问题
- 变量类型错误:
string[] text应改为string text,因为"The brown fox jumps"是单个字符串,并非字符串数组char split = " ";应改为char split = ' ';,char类型只能用单引号包裹单个字符int cutFrom = '2';和int cutTo = '4';错误使用字符赋值,字符'2'的ASCII值是50而非整数2,需直接写int cutFrom = 2;、int cutTo = 4;
- 变量名不一致:循环中使用的
parts未定义,实际拆分后的数组是splitText,会导致编译错误 - 逻辑错误:原代码仅判断索引等于
cutFrom的元素,且找到后直接return,只能返回单个元素,无法收集指定索引范围内的所有元素
修正后的代码
string text = "The brown fox jumps"; char split = ' '; int cutFrom = 2; int cutTo = 4; string[] splitText = text.Split(split); List<string> result = new List<string>(); // 先处理边界,避免cutTo超出数组最大索引导致越界 cutTo = Math.Min(cutTo, splitText.Length - 1); for (int i = 0; i < splitText.Length; i++) { // 判断当前索引是否在[cutFrom, cutTo]范围内 if (i >= cutFrom && i <= cutTo) { result.Add(splitText[i]); } } // 返回包含目标子串的字符串数组 return result.ToArray();
代码说明
- 用
List<string>动态收集符合条件的元素,解决固定数组长度的限制 - 增加
Math.Min(cutTo, splitText.Length - 1)处理边界,避免输入的cutTo超出数组最大索引引发异常 - 通过
i >= cutFrom && i <= cutTo判断当前元素是否处于目标索引区间,符合条件则加入结果集合 - 最终将List转为字符串数组返回,可得到索引2到4的所有单词:"brown"、"fox"、"jumps"
内容的提问来源于stack exchange,提问作者Newguy405
相关产品推荐
相关产品推荐

