C#Split-列表上的Split不返回所有需要的字符串
我对C#相当陌生,在尝试按列表元素拆分时遇到了一个问题。 我有一个包含以下字符串属性的资源文件: 我在一个列表中收集了它们,如下所示:C#Split-列表上的Split不返回所有需要的字符串,c#,list,split,C#,List,Split,我对C#相当陌生,在尝试按列表元素拆分时遇到了一个问题。 我有一个包含以下字符串属性的资源文件: 我在一个列表中收集了它们,如下所示: public List<String> RawNewsList1 = new List<String>() { {Resource.NewsContentAndroid1}, {Resource.NewsMetaAndroid1}, }; public List RawNewsList1=新列表() { {Resource.n
public List<String> RawNewsList1 = new List<String>()
{
{Resource.NewsContentAndroid1},
{Resource.NewsMetaAndroid1},
};
public List RawNewsList1=新列表()
{
{Resource.newscontendroid1},
{Resource.newsmataandroid1},
};
我试图在分号上拆分,但只从第二个列表项中获取结果。
我的拆分如下所示:
public void FilterRawNews()
{
String[] seperator = { ";;;" };
String[] filteredList1 = { "" };
for (int i = 0; i < RawNewsList1.Count; i++) {
filteredList1 = RawNewsList1[i].Split(seperator, 5,
StringSplitOptions.RemoveEmptyEntries);
}
foreach (String s in filteredList1)
{
Console.WriteLine(s);
}
}
public void filterRownews()
{
字符串[]分隔符={;;“};
字符串[]filteredList1={”“};
for(int i=0;i
它唯一的印刷品是:
110
2.8
02-07-2020
我做错了什么?
提前谢谢 在每次迭代中都会覆盖filteredList1。 这就是为什么你只能得到最后的结果 只需将filteredList1声明为列表并使用AddRange() 编辑:或使用LINQ:
var raw=newlist(){“111;;;222”,“333;;;444”};
字符串[]分隔符={;;“};
var filterlist1=raw.SelectMany(r=>r.Split(分隔符,5,StringSplitOptions.RemoveEmptyEntries)).ToList();
filteredList1变量首先由来自第一个资源的数据填充,然后在下一个循环中,变量的内容将替换为来自第二个资源的数据
您可以使用具有AddRange方法的列表
来继续向列表中添加元素
List<string> filteredList1 = new List<string>();
for (int i = 0; i < RawNewsList1.Count; i++) {
filteredList1.AddRange(RawNewsList1[i].Split(seperator, 5,StringSplitOptions.RemoveEmptyEntries));
}
那么,这一行发生了什么?当您处理可以作为数据序列处理的对象时,将使用该语法。在此上下文中,数组RawNewsList1是一个数据序列,我们可以使用通过使用Linq名称空间带来的IEnumerable扩展。SelectMany扩展需要一个lambda表达式(a=>..),该表达式用于生成指令,其中序列(a)的每个元素被传递到一个表达式,该表达式返回另一个数据序列(通过拆分返回的数组)。返回的序列累积到原始RASNewList1中的下一个元素生成的序列。最后,通过调用ToList().Split(separator,5,StringSplitOptions.RemoveEmptyEntries)[1]实现累积序列;如果您尝试调试代码,您会注意到filteredList1首先填充了来自第一个资源的数据,然后在下一个循环中,变量的内容被替换为来自第二个资源的数据。正如您所看到的,它只读取第二个资源的最后一个单元格。在调试模式下运行代码,查看是否所有值都被读取到RawNewsList1中,然后从那里开始
filteredList = RawNewsList1.SelectMany(a => a.Split(seperator,5, StringSplitOptions.RemoveEmptyEntries)).ToList();