对于以下代码...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 中。谢谢,唐纳德。
2 回答

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

牧羊人nacy
TA贡献1862条经验 获得超7个赞
由于换行符由 2 个字符组成(在大多数系统上都是 \r 和 \n),您可能会得到一个额外的空字符串作为这些字符之间的字符串。
试试这个:
IEnumerable<string> items=searchterms.Trim().Split(new string[] {Environment.NewLine}, StringSplitOptions.None); foreach (var item in items) {
- 2 回答
- 0 关注
- 114 浏览
添加回答
举报
0/150
提交
取消