2

私のコードの場合に最初itemのを無視する方法string[]if (item=="")

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

6 に答える 6

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
}
于 2013-03-28T12:02:18.703 に答える
1

continueキーワードを使用する必要があります。

そうは言っても、「」を自分でチェックする代わりに、おそらくString.IsNullOrEmptyメソッドを使用する必要があります。

if (String.IsNullOrEmpty(item))
{
   continue;
}
于 2013-03-28T11:58:41.377 に答える
0

下記参照。continue キーワードを使用できます。

for (int i=0; i < temp3.Length; i++)
    {
                        if (i == 0 && item3[i] == "")
                        {
                           continue;
                        }
   }
于 2013-03-28T11:58:50.640 に答える
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;
}
于 2013-03-28T12:40:54.343 に答える
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++;
}
于 2013-03-28T12:10:22.197 に答える
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
}
于 2013-03-28T12:10:53.153 に答える