.contains(&#34 ;;")无法检查C#中单元格中的值

时间:2017-07-11 06:41:36

标签: c# datagridview

我使用.contains()来检查DataGridView Csv单元格中的值是否包含值,然后我想删除或替换。

一切正常但行.contain(&#34 ;;")无效。

通过我的代码,我希望你能理解我想要做的事情。

if (!cellV.Contains("="))
     {
           continue;
     }
      //if contain P =, replace P= with "" coz only want the value, don want the P = for calculation
      else if (cellV.Contains("P = "))
     {
             cellV = cellV.Replace("P = ", "");
     }
       else if (cellV.Contains("F = n/a"))
     {
             cellV = cellV.Replace("F = n/a", "0");

     }
       else if (cellV.Contains("F = "))
     {
             cellV = cellV.Replace("F = ", "");
     }
       else if (cellV.Contains(" ; "))
     {
              cellV = cellV.Replace(" ; ", "");
     }
                Console.WriteLine(cellV);

这是输出

 19.8494
 0
 18
 0 ; 0 ; 0
 11988
 1
 31
 38
 0
 0
 2.3149

另外,我试图留下一个空白区域,也没有删除它(&#34 ;;"或&#34 ;;"依此类推)但是效果不佳

或者它无法读取";"因为它是一个特殊的角色?

我已经在网上搜索,但我找不到任何一个。

3 个答案:

答案 0 :(得分:4)

您正在使用else - if。这意味着,如果该单元已经包含在先前检查过的字符串中,那么&#34 ;;"不会被删除。试试这个:

 if (!cellV.Contains("="))
 {
       continue;
 }
  //if contain P =, replace P= with "" coz only want the value, don want the P = for calculation
 if (cellV.Contains("P = "))
 {
         cellV = cellV.Replace("P = ", "");
 }
 if (cellV.Contains("F = n/a"))
 {
         cellV = cellV.Replace("F = n/a", "0");

 }
 if (cellV.Contains("F = "))
 {
         cellV = cellV.Replace("F = ", "");
 }
 if (cellV.Contains(" ; "))
 {
          cellV = cellV.Replace(" ; ", "");
 }
            Console.WriteLine(cellV);

或更好:

if (!cellV.Contains("="))
{
    continue;
}

cellV = cellV.Replace("P = ", "")
             .Replace("F = n/a", "0")
             .Replace("F = ", "")
             .Replace(" ; ", "");

Console.WriteLine(cellV);

答案 1 :(得分:1)

你用你的代码块开始   if (!cellV.Contains("=")) continue

所有案例都包含=,但您检查;的情况不包含=

删除第一个if或同时检查;字符。

像这样:

     if (!cellV.Contains("=") && !cellV.Contains(";"))
     {
           continue;
     }
     ... // Other checks
     Console.WriteLine(cellV);

答案 2 :(得分:1)

似乎所有你想要的只是Replace 链接

if (cellV.Contains("="))
  cellV = cellV
    .Replace("P = ", "")
    .Replace("F = n/a", "0")
    .Replace("F = ", "")
    .Replace(" ; ", "");

编辑:发生了什么(导致行为不端)。想象一下,你有一个字符串

cellCV = "P = 123;";

您必须替换 "P = "片段 ";"。但是,您实施的代码(else if)只能执行一个分支(即else if (cellV.Contains("P = "))