[英]Change “Key word” (true/False) to “Yes/no” -Boolean C#
我正在尝试更改布尔值(真/假)的“关键字”,这是指我在控制台上编写时的意思。
例如:
我想要的是:
我有的:
我不想写“ true”,我想写“ yes”,并且C#可以理解。
码:
public void questionBought(string miQuestion)
{
Console.ForegroundColor = ConsoleColor.Green;
string temporal;
bool variableBool;
Console.WriteLine(miQuestion);
Console.ForegroundColor = ConsoleColor.Gray;
temporal = Console.ReadLine();
variableBool = Convert.ToBoolean(temporal);
this.setBought(variableBool);
}
您当前的代码:
variableBool = Convert.ToBoolean(temporal);
等效于:
variableBool = (temporal == "true");
同样,您可以针对选择的任何字符串测试是否相等:
variableBool = (temporal == "yes");
更好的是,在比较过程中,使用以下命令忽略大小写(因此用户可以键入“是”,“是”,“是”等) :
variableBool = temporal.Equals("yes", StringComparison.CurrentCultureIgnoreCase);
C#本身不能“理解”字符串的人类意图。 任何字符串都只是一个字符串。 但是,您可以检查那些字符串以获取期望值。 像这样:
temporal = Console.ReadLine();
if (temporal.ToLower().Equals("yes"))
variableBool = true;
else if (temporal.ToLower().Equals("no"))
variableBool = false;
else
Console.WriteLine("Unable to parse response.");
this.setBought(variableBool);
如果在“剃刀视图”中执行此操作,则可以执行以下操作:
@((item.variableBool) ? "Yes" : "No")
如果它是一个可为null的布尔,并假定它始终具有一个值:
@(((bool)item.variableBool) ? "Yes" : "No")
有多种方法可以实现此目的。 您正在读字符串,所以只需检查字符串等于什么即可。
您可以尝试如下操作:
temporal = Console.ReadLine();
if (temporal.Equals("yes"))
{
variableBool = true;
}
else
{
variableBool = false;
}
由于String.Equals返回布尔值,因此可以缩短为:
temporal = Console.ReadLine();
variableBool = temporal.Equals("yes");
为了进一步使它更加健壮并接受任何类型的大小写形式,例如“是”,“是”,“是”,您可以在检查相等性之前将其转换为小写:
temporal = Console.ReadLine();
variableBool = temporal.ToLower().Equals("yes");
有很多方法可以解决此问题,因此请尝试查找其他方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.