为每个换行符获取数组中的额外条目

对于以下代码...

IEnumerable<string> items=searchterms.Trim().Split(Environment.NewLine.ToCharArray());
foreach (var item in items) {

我在每个 searchterm 项目之间得到一个长度为 0 的项目。我在其他地方使用过类似的代码并没有遇到这个,所以不确定为什么现在会发生这种情况。我需要在这里添加什么来摆脱这些额外的条目?也就是说,项目的数量与输入中的术语数量相匹配。我有一个解决方法(跳过长度为 0 的项目),但数字不匹配很烦人,我想修复它以显示进度。即 items.count 的第 i+1 项。

PS 这是在 UWP 上的 Xamarin Forms 中。

谢谢,唐纳德。


德玛西亚99
浏览 122回答 2
2回答

侃侃尔雅

问题是您按 char 数组拆分,{ '\r', '\n' }这意味着任一符号都被视为分隔符,而不是 的整个序列"\r\n",即中间有一个空字符串"\r\n"。要按整个序列拆分,仅使用一个元素的字符串数组IEnumerable<string>&nbsp;items&nbsp;=&nbsp;searchterms.Trim().Split(new&nbsp;string[]&nbsp;{&nbsp;Environment.NewLine,&nbsp;},&nbsp;StringSplitOptions.None);"\r\n"除非字符串中有连续的,否则这不会产生空项。如果您还想在这种情况下删除空项目,您可以使用RemoveEmptyEntries字符串拆分选项。IEnumerable<string>&nbsp;items&nbsp;=&nbsp;searchterms.Trim().Split(new&nbsp;string[]&nbsp;{&nbsp;Environment.NewLine,&nbsp;},&nbsp;StringSplitOptions.RemoveEmptyEntries);

牧羊人nacy

由于换行符由 2 个字符组成(在大多数系统上都是 \r 和 \n),您可能会得到一个额外的空字符串作为这些字符之间的字符串。试试这个:IEnumerable<string>&nbsp;items=searchterms.Trim().Split(new&nbsp;string[]&nbsp;{Environment.NewLine},&nbsp;StringSplitOptions.None); foreach&nbsp;(var&nbsp;item&nbsp;in&nbsp;items)&nbsp;{
打开App,查看更多内容
随时随地看视频慕课网APP