如果item
我的代码
string[]
if (item=="")
的{{1}}
string[] temp3 = clearstring.Split(new string[]{@",","\r\n","\n","]", "\"", "}"}, StringSplitOptions.None);
temp.Close();
StreamWriter sW = new StreamWriter(Npath);
foreach (string item in temp3)
{
if (item == "")
{
}
答案 0 :(得分:3)
使用StringSplitOptions.RemoveEmptyEntries
string[] temp3 = clearstring.Split(new string[]{@",","\r\n","\n","]", "\"", "}"}, StringSplitOptions.RemoveEmptyEntries);
编辑:仅忽略第一个空字符串的选项:
for(int i=0; i<temp3.Length; i++)
{
string item = temp3[i];
if(i==0 && item == string.Empty)
continue;
//do work
}
答案 1 :(得分:1)
您应该使用continue
关键字。
话虽这么说,你可能应该使用String.IsNullOrEmpty方法,而不是检查“”你自己。
if (String.IsNullOrEmpty(item))
{
continue;
}
答案 2 :(得分:0)
见下文。您可以使用continue关键字。
for (int i=0; i < temp3.Length; i++)
{
if (i == 0 && item3[i] == "")
{
continue;
}
}
答案 3 :(得分:0)
string[] temp3 = clearstring.Split(new string[]{@",","\r\n","\n","]", "\"", "}"}, StringSplitOptions.None);
temp.Close();
StreamWriter sW = new StreamWriter(Npath);
int i = 0;
foreach (string item in temp3)
{
if (item == string.empty && i == 0)
{
continue;
}
// do your stuff here
i++;
}
答案 4 :(得分:0)
你提到如果它是空的,你需要先跳过,最后跳过
string[] temp3 = clearstring.Split(new string[]{@",","\r\n","\n","]", "\"", "}"}, StringSplitOptions.None);
temp.Close();
StreamWriter sW = new StreamWriter(Npath);
for (int i=0; i< temp3.Length; i++)
{
if ((i == 0 || i == temp3.Length-1) && string.IsNullOrEmpty(temp3[i]))
continue;
//do your stuff here
}
答案 5 :(得分:0)
为了完整起见,这里有几个Linq答案:
var stringsOmittingFirstIfEmpty = temp3.Skip(temp3[0] == "" ? 1 : 0);
var stringsOmittingFirstIfEmpty = temp3.Skip(string.IsNullOrEmpty(temp3[0]) ? 1 : 0);
var stringsOmittingFirstIfEmpty = temp3.Skip(1-Math.Sign(temp3[0].Length)); // Yuck! :)
我认为我实际上并没有使用其中任何一种(特别是最后一个,这真是一个笑话)。
我可能会选择:
bool isFirst = true;
foreach (var item in temp3)
{
if (!isFirst || !string.IsNullOrEmpty(item))
{
// Process item.
}
isFirst = false;
}
或者
bool isFirst = true;
foreach (var item in temp3)
{
if (!isFirst || item != "")
{
// Process item.
}
isFirst = false;
}
甚至
bool passedFirst = false;
foreach (var item in temp3)
{
Contract.Assume(item != null);
if (passedFirst || item != "")
{
// Process item.
}
passedFirst = true;
}