我正在使用 Linq 检查字符串值,如果它具有使用以下查询的所有数字:
bool isAllDigits = !query.Any(ch => ch < '0' || ch > '9');
Run Code Online (Sandbox Code Playgroud)
但是如果用户输入一个空格和数字(例如:"123 456"
,"123456 "
),这个检查就会失败。有没有一种方法可以检查空格?
我不想剪掉空格,因为我使用这个文本框来搜索文本,文本之间包含空格。
尝试这个:
bool isAllDigits = query.All(c => char.IsWhiteSpace(c) || char.IsDigit(c));
Run Code Online (Sandbox Code Playgroud)
这些方法内置于框架中,而不是滚动您自己的检查,我建议使用这些方法。
我在这里做了一个小提琴来演示。
正如评论中所指出的,char.IsDigit()
对于其他“数字”字符也将返回 true(即不仅是'0'-'9',还有其他语言/文化数字表示)。完整列表(我相信)可以在这里找到。
此外,char.IsWhiteSpace()
对于各种类型的空白字符,也将返回 true(有关更多详细信息,请参阅文档)。
如果你想只允许0-9
和常规“醇空格字符,你可以这样做:
bool isAllDigits = s.All(c => (c < 57 && c > 48) || c == 32);
Run Code Online (Sandbox Code Playgroud)
我正在使用 ASCII 字符的十进制值(供参考),但您也可以继续按照您目前的方式进行操作:
bool isAllDigits = s.All(c => (c < '9' && c > '0') || c == ' ');
Run Code Online (Sandbox Code Playgroud)
无论哪种方式都可以,重要的是要注意括号。您需要大于 0 但小于 9 的任何字符或仅一个空格。