-3

私の文字列配列には以下の値が含まれています

null
String 1 
String 2
String 3
null
String 4
String 5
String 6
null
String 7
String 8
String 9

取得したい

String 1 String 2 String 3
String 4 String 5 String 6
String 7 String 8 String 9
4

6 に答える 6

4

ちょっとしたLINQマジック

var arr = new [] {null,"string1","string2","string3",null,"string4","string5","string6",null,"string7","string8","string9"};

var items = arr.Select( (item,index) => new {item, nextNull = Array.IndexOf(arr,null,index)} )
                           .GroupBy(x => x.nextNull)
                           .Where(x => x.Any(y => !String.IsNullOrEmpty(y.item)))
                           .Select(x => String.Join(" ",x.Select(y => y.item)));

出力:

string1 string2 string3
string4 string5 string6
string7 string8 string9

実例: http: //rextester.com/GOIT12899

于 2012-12-03T11:13:02.937 に答える
2

null 表現は null 文字列を意味すると思います:

var array = arraySource.Where(n=> !string.IsNullOrEmpty(n)).ToArray();
于 2012-12-03T10:30:09.723 に答える
1

これがあなたが望むことをするループです:

string[] str = new[] { "null", "String 1", "String 2", "String 3", "null", "String 4", "String 5", "String 6", "null", "String 7", "String 8", "String 9" };
var newStr = new List<string>();
for (int i = 0; i < str.Length; i++)
{
    string current = str[i];
    if (current == "null")
    {
        int index = Array.IndexOf(str, "null", i + 1, str.Length - (i + 1));
        if (index >= 0)
        {
            newStr.Add(string.Join(" ", str.Skip(i + 1).Take(index - 1 - i)));
            i = index - 1;
        }
        else
        {
            if (i != str.Length - 1)
                newStr.Add(string.Join(" ", str.Skip(i + 1).Take(str.Length - i)));
            break;
        }
    }
}

string によって決定される指定されたインデックスで空白を含む文字列を結合しますnull

于 2012-12-03T10:54:02.887 に答える
1

配列に as stringがある場合はNULL、次を試してください。

string[] newArray = stringArray.Where(r => !r.Equals("null", StringComparison.InvariantCultureIgnoreCase))
                             .ToArray();
于 2012-12-03T10:26:50.133 に答える
0

これらのラインで試すことができます

string[] myArray = new[] { "Stack", null, "OverFlow" };
string[] nulless = myArray.Where(t => !string.IsNullOrEmpty(t)).ToArray();
于 2012-12-03T10:31:30.627 に答える
0

定義された部分に分割しますが、リストを使用する必要があります。

public static IEnumerable<IEnumerable<T>> Split<T>(this IEnumerable<T> list, int parts)
        {
          return list.Select((item, index) => new {index, item})
                       .GroupBy(x => (x.index + 1) / (list.Count()/parts) + 1)
                       .Select(x => x.Select(y => y.item));
        }
于 2012-12-03T10:33:15.640 に答える