0
        string temp = textBox1.Text;
        char[] array1 = temp.ToCharArray();
        string temp2 = "" + array1[0];
        string temp3 = "" + array1[1];
        string temp4 = "" + array1[2];
        textBox2.Text = temp2;
        textBox3.Text = temp3;
        textBox4.Text = temp4;

当用户在 textBox1 中输入少于三个字母时,如何防止发生 IndexOutOfRange 错误?

4

4 回答 4

10

如果用户在 textBox1 中输入的字母少于三个,我将如何防止出现 IndexOutOfRange 错误?

只需检查使用temp.Length

if (temp.Length > 0)
{
    ...
}

...或使用switch/ case

此外,您根本不需要数组。只需调用ToString每个字符,或使用Substring

string temp = textBox1.Text;
switch (temp.Length)
{
    case 0:
        textBox2.Text = "";
        textBox3.Text = "";
        textBox4.Text = "";
        break;
    case 1:
        // Via the indexer...
        textBox2.Text = temp[0].ToString();
        textBox3.Text = "";
        textBox4.Text = "";
        break;
    case 2:
        // Via Substring
        textBox2.Text = temp.Substring(0, 1);
        textBox3.Text = temp.Substring(1, 1);
        textBox4.Text = "";
        break;
    default:
        textBox2.Text = temp.Substring(0, 1);
        textBox3.Text = temp.Substring(1, 1);
        textBox4.Text = temp.Substring(2, 1);
        break;
}

另一种选择——甚至更简洁——是使用条件运算符:

string temp = textBox1.Text;
textBox2.Text = temp.Length < 1 ? "" : temp.Substring(0, 1);
textBox3.Text = temp.Length < 2 ? "" : temp.Substring(1, 1);
textBox4.Text = temp.Length < 3 ? "" : temp.Substring(2, 1);
于 2013-07-18T16:17:29.813 回答
0

另一种方法是使用ElementAtOrDefault

    string[] temp = textBox1.Text.Select(c => c.ToString());
    string temp2 = "" + temp.ElementAtOrDefault(0);
    string temp3 = "" + temp.ElementAtOrDefault(1);
    string temp4 = "" + temp.ElementAtOrDefault(2);
    textBox2.Text = temp2;
    textBox3.Text = temp3;
    textBox3.Text = temp4;
于 2013-07-18T16:20:01.113 回答
0

此类问题的一般解决方案是在访问其元素之前检查源值(数组、字符串或向量)的长度。例如:

string  temp = textBox1.Text;

if (temp.Length > 0)
    textBox2.Text = temp.Substring(0, 1);
if (temp.Length > 1)
    textBox3.Text = temp.Substring(1, 1);
if (temp.Length > 2)
    textBox4.Text = temp.Substring(2, 1);
于 2013-07-18T16:23:08.457 回答
0

如果大小是固定的,即没有。字符为 3 或长度为 3 那么它必须像.....

string temp = textBox1.Text; char[] array1 = temp.ToCharArray(); if(temp.length==3) { string temp2 = "" + array1[0]; string temp3 = "" + array1[1]; string temp4 = "" + array1[2]; textBox2.Text = temp2;
textBox3.Text = temp3; textBox3.Text = temp4; }
如果您的字符串长度为 3,这将起作用....

于 2013-07-18T16:28:21.043 回答