9

次のエラーが表示されます。

Index and length must refer to a location within the string.
Parameter name: length

このコードの使用:

string a1 = ddlweek.Text.Substring(0, 8);                
string a3 = ddlweek.Text.Substring(10, 14);

これは何を意味するのでしょうか?

4

5 に答える 5

15

文字列 (ddlweek) の長さが 23 文字以下の場合、次のエラーが発生します。

    string ddlweek = "12345678901234567890123";//This is NOK
    string a1 = ddlweek.Substring(0, 8);                
    string a3 = ddlweek.Substring(10, 14);
    Console.WriteLine("a1="+a1);
    Console.WriteLine("a3="+a3);
    Console.ReadLine();

文字列の長さは 24 文字以上ifにする必要があります。

    string ddlweek = "123456789012345678901234";//This is OK
    string a1 = ddlweek.Substring(0, 8);                
    string a3 = ddlweek.Substring(10, 14);
    Console.WriteLine("a1="+a1);
    Console.WriteLine("a3="+a3);
    Console.ReadLine();
于 2012-05-16T08:56:14.230 に答える
7

これは、ddlweek.Text文字列に含まれる文字数が で要求した文字数よりも少ないことを意味しますSubstring(index, length)

例:

if (ddlweek.Text.Length >= 8)
    string a1 = ddlweek.Text.Substring(0, 8);  
于 2012-05-16T08:49:37.510 に答える
3

このエラーは、合計文字数の上限を超えた場合に発生します。例えば

        string name = "iLovePakistan"; // Here i want to print only Pakistan

        string name2 = name.Substring(5, 150); // this code will throw same error. just replace 150 with name.Length - 5

        string name3 = name.Substring(5, name.Length - 5); // i skip firt 5 charchers then name.Length-5 means print rest 8 characters.

        string name4 = name.Substring(5, 8); // This will do exactly as name3
        Console.WriteLine(name4);
于 2014-05-27T10:58:43.967 に答える
3

これは、存在しないddlweekの部分文字列 (つまり、長さが 24 文字を超える) を要求していることを意味します。

于 2012-05-16T08:48:06.167 に答える