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”索引确定的组。我假设每个组都应该加一个空格。这是一个很好的例子。。。