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

Pra*_*ruz -1 c# linq textbox

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

bool isAllDigits = !query.Any(ch => ch < '0' || ch > '9');
Run Code Online (Sandbox Code Playgroud)

但是如果用户输入一个空格和数字(例如:"123 456""123456 "),这个检查就会失败。有没有一种方法可以检查空格?

我不想剪掉空格,因为我使用这个文本框来搜索文本,文本之间包含空格。

mac*_*ura 5

尝试这个:

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 的任何字符仅一个空格。