我正在使用Linq检查字符串值,如果它使用以下查询包含所有数字:
bool isAllDigits = !query.Any(ch => ch < '0' || ch > '9');
但是如果用户输入空格以及数字(例如:"123 456"
,"123456 "
),则此检查失败。有没有办法可以检查空白区域?
我不想删除空格,因为我使用此文本框搜索文本,其中包含空格。
答案 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 != ' ');