为每个换行符获取数组中的额外条目
Getting an extra entry in array for each newline
对于以下代码...
IEnumerable<string> items=searchterms.Trim().Split(Environment.NewLine.ToCharArray());
foreach (var item in items) {
我在每个搜索词项之间得到一个长度为 0 的项。我在其他地方使用过类似的代码而不是 运行 到这里,所以不确定为什么现在会发生这种情况。我需要在这里添加什么来摆脱这些额外的条目?也就是说,项目的数量与输入中的术语数量相匹配。我有一个解决方法(跳过长度为 0 的项目),但数字不匹配很烦人,我想修复它以显示进度。即 items.count.
的项目 i+1
P.S。这是 UWP 上的 Xamarin Forms。
谢谢,
唐纳德.
由于换行符由 2 个字符组成(在大多数系统上都是 \r 和 \n),您可能会得到一个额外的空字符串作为这些字符之间的字符串。
试试这个:
IEnumerable<string> items=searchterms.Trim().Split(new string[] {Environment.NewLine}, StringSplitOptions.None);
foreach (var item in items) {
问题是你用{ '\r', '\n' }
的char数组分割,这意味着任何一个符号都被视为分隔符,而不是"\r\n"
的整个序列,即[=中有一个空字符串=13=]介于两者之间。
要拆分整个序列只使用一个元素的字符串数组
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);
对于以下代码...
IEnumerable<string> items=searchterms.Trim().Split(Environment.NewLine.ToCharArray());
foreach (var item in items) {
我在每个搜索词项之间得到一个长度为 0 的项。我在其他地方使用过类似的代码而不是 运行 到这里,所以不确定为什么现在会发生这种情况。我需要在这里添加什么来摆脱这些额外的条目?也就是说,项目的数量与输入中的术语数量相匹配。我有一个解决方法(跳过长度为 0 的项目),但数字不匹配很烦人,我想修复它以显示进度。即 items.count.
的项目 i+1P.S。这是 UWP 上的 Xamarin Forms。
谢谢, 唐纳德.
由于换行符由 2 个字符组成(在大多数系统上都是 \r 和 \n),您可能会得到一个额外的空字符串作为这些字符之间的字符串。
试试这个:
IEnumerable<string> items=searchterms.Trim().Split(new string[] {Environment.NewLine}, StringSplitOptions.None);
foreach (var item in items) {
问题是你用{ '\r', '\n' }
的char数组分割,这意味着任何一个符号都被视为分隔符,而不是"\r\n"
的整个序列,即[=中有一个空字符串=13=]介于两者之间。
要拆分整个序列只使用一个元素的字符串数组
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);