Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/293.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 要从我的数组中检索字符串吗_C# - Fatal编程技术网

C# 要从我的数组中检索字符串吗

C# 要从我的数组中检索字符串吗,c#,C#,我的字符串数组包含以下值 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 如果数组中有NULL作为字符串,请尝试: string[] newArray = stringArray

我的字符串数组包含以下值

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

如果数组中有
NULL
作为字符串,请尝试:

string[] newArray = stringArray.Where(r => !r.Equals("null", StringComparison.InvariantCultureIgnoreCase))
                             .ToArray();

我认为空表示法意味着空字符串:

var array = arraySource.Where(n=> !string.IsNullOrEmpty(n)).ToArray();

你可以试试这些线路

string[] myArray = new[] { "Stack", null, "OverFlow" };
string[] nulless = myArray.Where(t => !string.IsNullOrEmpty(t)).ToArray();

将其拆分为定义的部分,但需要使用列表:

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));
        }
公共静态IEnumerable拆分(此IEnumerable列表,int部分)
{
返回列表。选择((项,索引)=>new{index,项})
.GroupBy(x=>(x.index+1)/(list.Count()/parts)+1)
.Select(x=>x.Select(y=>y.item));
}

这里有一个循环,可以满足您的需要:

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[]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=新列表();
对于(int i=0;i=0)
{
newStr.Add(string.Join(“,str.Skip(i+1).Take(index-1-i));
i=指数-1;
}
其他的
{
如果(i!=str.Length-1)
newStr.Add(string.Join(“,str.Skip(i+1).Take(str.Length-i));
打破
}
}
}
它在由字符串
null

确定的指定索引处用一个空格连接字符串

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

实时示例:

是否预期返回3个元素的数组?即,由连接在一起的前3个字符串、第2个3和第3个组成?是数组还是包含
换行符
字符的文件?您以前的代码有
NULL
,现在是
NULL
,是字符串中的NULL值还是“NULL”作为你生命中的一根弦array@Jamiec需要将前三个3字符串连接在一起,第二个3字符串和第三个3字符串。那么,您是在尝试获取
null
s之间的子数组,还是您希望的输出以这种方式出现纯粹是巧合?无法确定。他不想选择“非空”字符串,他想将数组拆分为由“空”索引确定的组。我假设每个组都应该用一个空格连接。@TimSchmelter,在这种情况下,他需要一个循环,但老实说,问题一点也不清楚,他不想选择“non-NullOrEmpty”字符串,他想将数组分成由“null”索引确定的组。我假设每个组都应该加一个空格。这是一个很好的例子。。。