当前位置:  开发笔记 > 编程语言 > 正文

为什么查询结果中缺少一个字符?

如何解决《为什么查询结果中缺少一个字符?》经验,为你挑选了1个好方法。

看看代码:

string expression = "x & ~y -> (s + t) & z";
var exprCharsNoWhitespace = expression.Except( new[]{' ', '\t'} ).ToList();
var exprCharsNoWhitespace_2 = expression.Replace( " ", "" ).Replace( "\t", "" ).ToList();

// output for examination
Console.WriteLine( exprCharsNoWhitespace.Aggregate( "", (a,x) => a+x ) );
Console.WriteLine( exprCharsNoWhitespace_2.Aggregate( "", (a,x) => a+x ) );

// Output:
// x&~y->(s+t)z
// x&~y->(s+t)&z

我想从原始字符串中删除所有空格,然后获取单个字符.结果让我很惊讶.正如预期的那样,变量exprCharsNoWhitespace不包含任何空格,但出乎意料的是,只包含几乎所有其他字符.缺少"&"的最后一次出现,列表的计数为12.而exprCharsNoWhitespace_2完全符合预期:Count为13,包含除空格之外的所有字符.

使用的框架是.NET 4.0.我也只是将它粘贴到csharppad(基于Web的IDE /编译器)并得到了相同的结果.

为什么会这样?


编辑:好吧,我没有意识到正如Ryan O'Hara指出的那样,一个固定的操作.我之前没用过它.

// So I'll continue just using something like this:
expression.Where( c => c!=' ' && c!='\t' )

// or for more characters this can be shorter: 
expression.Where( c => ! new[]{'a', 'b', 'c', 'd'}.Contains(c) ).

Ry-.. 18

Except产生一差异.你的表达式不是一个集合,所以它不是正确的使用方法.至于&具体缺失的原因:这是因为它重复了.没有其他字符.



1> Ry-..:

Except产生一差异.你的表达式不是一个集合,所以它不是正确的使用方法.至于&具体缺失的原因:这是因为它重复了.没有其他字符.


D'哦!我不知道方法的这个方面.
推荐阅读
勤奋的瞌睡猪_715
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有