忽略字符串数组的第一项

时间:2013-03-28 11:57:29

标签: c#

如果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 == "")
    {
    }

6 个答案:

答案 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;
}