我需要为逗号分隔的字符串修改它。我希望用户能够输入多个数字,但我需要在继续之前验证它们是否都是数字。有什么想法吗?
while (!int.TryParse(Console.ReadLine(), out iValue))
{
Console.WriteLine("Please Enter a valid Number!");
}
答案 0 :(得分:1)
您可以实现自定义方法来解析整数数组并以相同的方式使用它:
void Main()
{
while (!TryParseIntegerArray(Console.ReadLine(), out var arr))
{
Console.WriteLine("Please Enter a valid integer or comma-separated string!");
}
// work with arr here
}
bool TryParseIntegerArray(string input, out int[] arr)
{
if (input == null)
throw new ArgumentNullException(nameof(input));
try
{
arr = input.Split(new[] { "," }, StringSplitOptions.RemoveEmptyEntries)
.Select(int.Parse)
.ToArray();
return true;
}
catch (FormatException)
{
arr = null;
return false;
}
}
但是,我不建议直接使用Console.ReadLine()
作为参数,TryParseIntegerArray
和int.TryParse
。至少你需要检查它是否为null。例如:
string input;
int[] arr;
do
{
input = Console.ReadLine();
if (string.IsNullOrWhiteSpace(input))
{
Console.WriteLine($"Good bye!");
return;
}
} while (!TryParseIntegerArray(input, out arr));
答案 1 :(得分:0)
我最终得到了什么
while (true)
{
try
{
var entry = Console.ReadLine();
List<int> myNumbers = entry.Split(',').Select(int.Parse).ToList();
serializedValue = _unitOfWork.GetSerializedCollection(myNumbers);
Console.WriteLine(serializedValue);
Console.ReadLine();
}
catch (FormatException)
{
Console.Write("You must enter a number.");
continue;
}
break;
}