系统.ArgumentOutOfRangeException错误

本文关键字:错误 ArgumentOutOfRangeException 系统 | 更新日期: 2023-09-27 18:15:45

using System;
using System.Text.RegularExpressions;
using System.Globalization;
public class Kata
{
   public static string ToCamelCase(string str)
   {
        TextInfo myTI = new CultureInfo("en-US", false).TextInfo;
        string clearStr = Regex.Replace(myTI.ToTitleCase(str), @"_|-", "");
        return clearStr = str.Substring(0, 3) + clearStr.Remove(0, 3);     
   }
}

input -> ToCamelCase("the_stealth_warrior")

input -> ToCamelCase("The-Stealth-Warrior")

错误:系统。索引和长度必须引用字符串中的位置。参数名称:长度

我做错了什么?

系统.ArgumentOutOfRangeException错误

如果strclearStr短于3,则在Substring(0, 3)Remove(0, 3)抛出异常。我建议添加验证:

public static string ToCamelCase(string str) {
  // if str is null or too short 
  if (string.IsNullOrEmpty(str))
    return str;
  else if (str.Length < 3)
    return str;
  TextInfo myTI = new CultureInfo("en-US", false).TextInfo;
  string clearStr = Regex.Replace(myTI.ToTitleCase(str), @"_|-", "");
  // if clearStr is too short
  if (clearStr.Length < 3)
    return str;
  return clearStr = str.Substring(0, 3) + clearStr.Remove(0, 3);
}

检查strclearStr的长度。

如果字符串长度小于选择/删除的长度,Substring将抛出此错误。

如果您传递的str参数字符串小于3个字符,您的代码将抛出此异常。我建议在开头添加一个检查,并定义这类值的期望结果。