三行代码  ›  专栏  ›  技术社区  ›  qternel

列出索引的字符串超出范围

c#
  •  0
  • qternel  · 技术社区  · 1 月前

    当我尝试运行我的程序时,我得到以下结果:

    System.ArgumentOutOfRangeException:“索引和长度必须引用字符串中的位置。Arg\u ParamName\u Name”

    static List<string> strToList(string s)
    {
        // input = 00:00:00AM
        //         0123456789
        List<string> a = new List<string> { };
        a.Add(s.Substring(0, 2)); //hh [0]  
        a.Add(s.Substring(3, 5));    //mm [1]
        a.Add(s.Substring(6, 8)); //ss [2]
        a.Add(s.Substring(8, 10)); //am [3]
    
        return a;
    }
    
    
    
    string s = "12:01:00PM";
    
    List<string> a = strToList(s);
    
    foreach (var x in a) {
        Console.WriteLine(x);
    }
    
    
    2 回复  |  直到 1 月前
        1
  •  0
  •   Wojciech Wojtulewski    1 月前

    子字符串([索引],[长度])

    static List<string> strToList(string s)
        {
            // input = 00:00:00AM
            //         0123456789
            List<string> a = new List<string> { };
            a.Add(s.Substring(0, 2)); //hh [0]  
            a.Add(s.Substring(3, 2));    //mm [1]
            a.Add(s.Substring(6, 2)); //ss [2]
            a.Add(s.Substring(8, 2)); //am [3]
    
            return a;
        }
    
        2
  •  0
  •   Rhapsody    1 月前

    第二个参数是要检索的字符串的长度。

    见: https://docs.microsoft.com/en-us/dotnet/api/system.string.substring?view=net-6.0#System_String_Substring_System_Int32_System_Int32

    所以 s.Substring(0,3) 取前三个字符。(从索引0开始) s.Substring(2,5)