我有一个数字串,它用一个空格分隔:
1 2 3 4 5 6 . . . .
如何正确测试?
如果是的话。将返回 false
1 b d 2 ...
或如果它被更多的空格分隔。将返回 false
1 3 5 3
解决方案:
string temp = "1 2 3 4 5 6";
int number;
bool result = temp.Split(' ').All(x => int.TryParse(x, out number));
谢谢@ Selman22。
答案 0 :(得分:1)
只需将Split
与All
方法一起使用:
int number;
bool result = str.Split(' ').All(x => int.TryParse(x, out number));
这将按空格分割字符串,并检查每个部分是否为有效的int。如果有字母或连续的空格,则返回false。
答案 1 :(得分:1)
使用正则表达式将字符串与:
匹配\d( \d)*
这意味着:一个数字,然后可选地是单个空格的一次或多次,后跟一个数字。
在C#中,您可以这样使用它:
Regex regex = new Regex(@"\d( \d)*");
Match match = regex.Match("1 2 3 4 5");
if (match.Success)
{
Console.WriteLine(match.Value);
}
答案 2 :(得分:0)
string line = "1 2 3 4 5 6";
string[] array = line.split[' '];
如果您想确保数组元素是整数,您可以迭代每个元素并执行int.TryParse
for(int i = 0; i < array.Length; i++)
{
int tmp;
bool isInteger = int.TryParse(array[i], out tmp);
}
修改强>
首先,你可以做一个简单的检查,看看这行是否在数字之间包含多个空格字符。
if(line.Contains(" "))
{
return false;
}
然后,拆分成数组并检查每个成员是否为整数。