为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

C#
德玛西亚99 2022-12-31 13:18:48
对于以下代码...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);



查看完整回答
反对 回复 2022-12-31
?
牧羊人nacy

TA贡献1862条经验 获得超7个赞

由于换行符由 2 个字符组成(在大多数系统上都是 \r 和 \n),您可能会得到一个额外的空字符串作为这些字符之间的字符串。

试试这个:

IEnumerable<string> items=searchterms.Trim().Split(new string[] {Environment.NewLine}, StringSplitOptions.None);
foreach (var item in items) {



查看完整回答
反对 回复 2022-12-31
  • 2 回答
  • 0 关注
  • 114 浏览

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号