在控制台应用C#中检查输入数据类型

时间:2016-07-30 20:41:27

标签: c# console-application

如何在c#控制台应用程序中检查输入数据类型..

Class A
{

 object o=Console.ReadLine();
 //logic here to check data type and print
//e.g type of Integer, Decimal, String etc

}

如果我提供23的输入,那么它会打印'Integer'

如果我提供23.9的输入,那么它会打印'Decimal'

如果我提供"abcd"的输入,那么它会打印'String'

我想做的是...... 像

这样的东西
Class A
{
Type t=Typeof(Console.ReadLine().GetType);
Console.WriteLine(t.Name);
}

4 个答案:

答案 0 :(得分:1)

我不知道任何魔法,但你可以搜索包管理器/ github。您将不得不解析输入字符串。 .Net Fiddle.

string o = Console.ReadLine();

string finalType = "String";
if (!string.IsNullOrEmpty(o)){

  // Check integer before Decimal
  int tryInt;
  decimal tryDec;
  if (Int32.TryParse(o, out tryInt)){
    finalType = "Integer";
  }
  else if (Decimal.TryParse(o, out tryDec)){
    finalType = "Decimal";
  }    

}

Console.WriteLine(finalType);

答案 1 :(得分:0)

首先应检查输入字符串是否用双引号括起来。如果是这样,打印字符串。

然后使用long.TryParse来检查你是否可以解析为long。如果是这样,请打印整数。

然后使用decimal.TryParse查看是否可以将其解析为十进制。如果是这样,请打印十进制。

这是你的意思吗?

答案 2 :(得分:0)

您需要解析传入的数据。根据您需要处理的类型数量,您可以选择不同的路线:

  • 许多简单数据类型都有一个名为TryParse()的静态方法。您可以使用此方法查看是否可以将输入字符串解析为每种类型。如果您处理的数量非常有限,这只是一个很好的解决方案。
  • 您可以使用解析表达式语法(" PEG")或类似方法,它允许您定义用于解析任意文本的正式语法。这种方法的优点是您还可以支持复杂的结构(即值列表,嵌套值等)。这种方法非常灵活和富有表现力,但它也有更大的学习曲线。
  • 您可以使用正则表达式,它提供与PEG类似的功能,但通常在更有限的上下文中。您应该能够轻松找到常见简单数据类型(数字,布尔值,字符串等)的正则表达式。

答案 3 :(得分:0)

供将来的读者使用...我有类似的任务,并且提出了以下解决方案: *来自控制台的任何输入都被视为字符串类型。在C#中,您需要尽可能将输入解析为特定类型。

    var input = Console.ReadLine();

// `typeToCheck`.TryParse(input, out _) - Will return True if parsing is possible.            

                if (Int32.TryParse(input, out _))
                {
                    Console.WriteLine($"{input} is integer type");
                }
                else if (double.TryParse(input, out _))
                {
                    Console.WriteLine($"{input} is floating point type");
                }
                else if (bool.TryParse(input, out _))
                {
                    Console.WriteLine($"{input} is boolean type");
                }
                else if (char.TryParse(input, out _))
                {
                    Console.WriteLine($"{input} is character type");
                }
                else // since you cannot parse to string ... if the previous statements came up false -> IT's STRING Type.
                {
                    Console.WriteLine($"{input} is string type");
                }