C# 检查控制台应用程序C中的输入数据类型#
如何在c#控制台应用程序中检查输入数据类型C# 检查控制台应用程序C中的输入数据类型#,c#,console-application,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,它将打印“整数” 如果我输入23.9,它将打印“十进制” 如果我输入“abcd”,它将打印“字符串” 我想做的是。。 差不多 Class A { Type t=Typeof(Co
Class A
{
object o=Console.ReadLine();
//logic here to check data type and print
//e.g type of Integer, Decimal, String etc
}
如果我输入23
,它将打印“整数”
如果我输入23.9
,它将打印“十进制”
如果我输入“abcd”
,它将打印“字符串”
我想做的是。。
差不多
Class A
{
Type t=Typeof(Console.ReadLine().GetType);
Console.WriteLine(t.Name);
}
我不知道有什么神奇之处,不过你可以搜索包管理器/github。您必须解析输入字符串
您应该首先检查输入字符串是否包含在双引号中。如果是,请打印字符串 然后使用long.TryParse检查是否可以解析为long。如果是,请打印整数 然后使用decimal.TryParse查看是否可以将其解析为decimal。如果是,请打印十进制
这就是您的意思吗?您需要解析传入的数据。根据需要处理的类型的不同,您可以走两条不同的路线:
- 许多简单的数据类型都有一个名为
的静态方法。您可以使用此方法查看是否可以将输入字符串解析为每种类型。只有在处理数量非常有限的类型时,这才是一个好的解决方案TryParse()
- 您可以使用解析表达式语法(“PEG”)或类似的方法,它允许您定义解析任意文本的形式语法。这种方法的优点是,您还可以支持复杂的结构(即值列表、嵌套值等)。这种方法非常灵活和富有表现力,但也有更大的学习曲线
- 您可以使用正则表达式,它提供与PEG类似的功能,尽管通常在更有限的上下文中。您应该能够轻松找到常见简单数据类型(数字、布尔值、字符串等)的正则表达式
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");
}
你试过什么?你具体有什么问题?堆栈溢出不是“为我编写代码”服务。它是为了帮助人们解决特定的、实际的编程问题。请做出一些努力,并提供一份好的报告,清楚地显示您的尝试,并详细解释您遇到的具体问题。将始终返回一个
系统。String
是的,我知道,我不希望任何人编写我的代码,我会自己编写。我只是想知道一种方法或想法,可以帮助我编写此代码**你可以告诉我,我没有很好地解释这个问题,我不擅长(据我所知)。“我只是想知道一种方法或一个想法来帮助我写这段代码”——这个问题太宽泛了。有许多方法可以解决上述问题,但您甚至没有提供明确的规范。例如,你说“23”
应该打印'String'
,但是23
应该打印什么呢?编辑后的文章在清晰度方面与之前的文章没有任何不同。例如,如果用户输入abcd
,输出应该是什么?更重要的是,你尝试过什么?是的,我这样写,我认为你遗漏了一些东西,因为我们需要先检查十进制数,然后再将其检查为整数。如果在编辑中,我会改为else。如果它是一个没有小数点的整数,它将报告为整数。如果是十进制,则else If块将命中并报告为十进制。否则它将作为字符串报告。
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");
}