因为要把控件中的值进行计算,所以要Convert.ToDouble,控件中默认值都为空格,计算的时候我想把空格都替换成0
 Convert.ToDouble(dgv1["_gyscxf", i].Value.ToString().Trim().Replace("","0"))
提示这样的错误:String cannot be of zero length.
Parameter name: oldValue 请问是哪里的问题呀。

解决方案 »

  1.   

    Replace的方法第一个参数不能为空字符串
      

  2.   

    Convert.ToDouble(dgv1["_gyscxf", i].Value.ToString().Trim().Replace("","0")) 
    --------------------------------------------------------------------^^
    oldValue指的就是它。
    与其用dgv1["_gyscxf", i].Value.ToString().Trim()
    不如用个if吧。当为空就等于0。
      

  3.   

    if(dgv["_gyscxf",i].Value != null)
    {
      if(dgv["_gyscxf",i].Value is string && !string.IsNullOrEmpty(dgv["_gyscxf",i].Value))
      {
         // 转换与替换
      }
    }
      

  4.   

    如果是空格那应该是Replace(" ","0")) 
      

  5.   

    指的位置好象不对。 显示的问题。就是replace的第一个参数。
      

  6.   

    string data=dgv1["_gyscxf", i].Value.ToString().Trim();
    Convert.ToDouble(data==""?"0":data);
      

  7.   


    Convert.ToDouble(dgv1["_gyscxf", i].Value.ToString().Trim().Replace('空格','0')) 
      

  8.   

    Replace方法第一个字符串如果为空字符串的话到底是要替换哪一个呢 
     你可以判断一下 文本框内容Trim()后是否为“”(空字符串) 如果是的话 为零
    这样用是可以的   
    Replace(" ","sss")  第一个参数中间有个空格  
      

  9.   

    怎么是双引号?修改成如下:Convert.ToDouble(dgv1["_gyscxf", i].Value.ToString().Trim().Replace('','0')) 
      

  10.   

    自己测试一下看看:Convert.ToDouble(dgv1["_gyscxf", i].Value.ToString().Trim().Replace(' ','0')) 
      

  11.   


    这个是正确的trim()函数本来就会去掉前后的空格
    不用在replace了况且""转换为double也会出错
    应该自己判断
    如果为空就返回0,否则返回值
      

  12.   


      Replace第一个参数oldValue的长度不能为0也就是你的Replace("","0")这段的第一个参数不能为"",为""的话长度就是为0了,但是你可以在""中加个空格,像这样" " 
       Replace(" ","0");空格一下就可以了.这样写没问题的。我试了。
      

  13.   

      对了. 还有你那个trim函数要去掉. 
      

  14.   

    Convert.ToDouble(dgv1["_gyscxf", i].Value.ToString().Trim().Replace(" ","0")) 
      

  15.   

     改成
    Convert.ToDouble(dgv1["_gyscxf", i].Value.ToString().Trim().Replace('','0')) 

    Convert.ToDouble(dgv1["_gyscxf", i].Value.ToString().Trim().Replace(" ","0")) 
    都提示
     Input string was not in a correct format.
      

  16.   

    改成 
    Convert.ToDouble(dgv1["_gyscxf", i].Value.ToString().Trim().Replace('','0')) 
    或 
    Convert.ToDouble(dgv1["_gyscxf", i].Value.ToString().Trim().Replace(" ","0")) 
    都提示 
    Input string was not in a correct format.
    ============================================
    这不是替换的问题了,应该是你的值不能转换成double类型!你跟踪看看dgv1["_gyscxf", i].Value.ToString().Trim().Replace(" ","0")是什么?