检查所有数字的字符串以及使用Linq的任何空格

时间:2017-09-20 20:45:44

标签: c# linq textbox

我正在使用Linq检查字符串值,如果它使用以下查询包含所有数字:

bool isAllDigits = !query.Any(ch => ch < '0' || ch > '9');

但是如果用户输入空格以及数字(例如:"123 456""123456 "),则此检查失败。有没有办法可以检查空白区域?

我不想删除空格,因为我使用此文本框搜索文本,其中包含空格。

2 个答案:

答案 0 :(得分:4)

试试这个:

bool isAllDigits = query.All(c => char.IsWhiteSpace(c) || char.IsDigit(c));

这些方法内置于框架中,而不是滚动自己的检查,我建议使用这些。

我做了一个小提琴here来演示。

编辑

正如评论中所指出的,char.IsDigit()将对其他&#34;数字&#34;字符也是(即不是只是&#39; 0&#39; - &#39; 9&#39;,还有其他语言/文化编号表示)。完整列表(我相信)可以找到here

此外,对于各种类型的空白字符,char.IsWhiteSpace()也会返回true(有关详细信息,请参阅docs)。

如果您只想 允许0-9和常规空格字符,您可以这样做:

bool isAllDigits = s.All(c => (c < 57 && c > 48) || c == 32);

我使用的是ASCII字符(for reference)的十进制值,但您也可以按照目前的方式继续操作:

bool isAllDigits = s.All(c => (c < '9' && c > '0') || c == ' ');

无论哪种方式都很好,重要的是要注意的是圆括号。您希望任何大于0但小于9 OR 的字符只需一个空格。

答案 1 :(得分:0)

bool isAllDigits = !query.Any(ch => (ch < '0' || ch > '9') && ch != ' ');