转换字符串时如何解决输入字符串错误

时间:2019-04-18 14:50:41

标签: c# visual-studio type-conversion int32

我正在标记一些代码,但无法理解为什么此错误不断抛出(相同的代码在其他瞳孔解决方案上也起作用。这是一个简单的添加客户端表单。试图将详细信息添加到文本文件中。错误“输入字符串为格式不正确”在点击添加按钮时一直显示。 所有帮助表示赞赏 代码如下所示:

  if (File.Exists("CompetitorDataFile.txt"))
                {
                    string[] arr = 
    File.ReadLines("CompetitorDataFile.txt").ToArray();
                    I = arr.Length;
                    ID = I + 1;
                    textBox2.Text = Convert.ToString(ID);

                    for (int z = 0; z  < arr.Length; z++)
                    {
                        string[] arr2 = arr[z].Split('~');

                        if (FrmAdd.ID == Convert.ToInt32(arr2[1]))
                        {
                            valid2 = false;
                            MessageBox.Show("Unique ID needed", 
     "Error");
                        }
                    }
                }
                else
                {
                    ID = I;
                    textBox2.Text = Convert.ToString(ID);

                }

1 个答案:

答案 0 :(得分:0)

我对提供的代码进行了一些小的更改,并执行了您遇到错误的核心区域。

我不确定您输入的字符串数组如何? 两种情况下

1-包含字符串 “ ba〜7U”,“ m4〜ro5” -转换失败

仅2个数字 “ 01XX〜78”, -转换成功

“ 01XX〜70000000008”, ,它无法通过其int类型失败,但超出了int的限制)

   static void test()
    {
        int ID, I = 0; int SomeValue = 0;
        //if (File.Exists("CompetitorDataFile.txt"))
        //{
        string[] arr = new string[] { "01XX~78", "ba~7U", "m4~ro5" };
        I = arr.Length;
        ID = I + 1;
        var ss = Convert.ToString(ID);
        int val=0;
        for (int z = 0; z < arr.Length; z++)
        {
            string[] arr2 = arr[z].Split('~');

            if (SomeValue == checkConvertion(arr2[1] ))
            {
              var  valid2 = false;
            }
        }
        //}
        //else
        //{
        //    ID = I;
        //    var res = Convert.ToString(ID);

        //}
    }

   static  int checkConvertion(string stringInput)
    {
        int val;
        var convertionResult = int .TryParse(stringInput, out val);
        // int.Parse(stringInput);  -- also you can use this
        return convertionResult ? val : 0;
    }

如果int数据类型的范围超过int. Max

,则应格外小心

(对不起,您无法编辑代码,命名命名错误以及对很多区域进行注释,我只是想向您展示转换方面)