我使用.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 ;;"依此类推)但是效果不佳
或者它无法读取";"因为它是一个特殊的角色?
我已经在网上搜索,但我找不到任何一个。
答案 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 = "))
)