Asb*_*edt -1 c# parsing boolean
为什么这个 C# 代码不起作用?我想不明白。
我正在努力寻找一个简单的 C# 代码示例,该示例可以将 console.readline() 中的字符串值“y”和“n”转换/解析为布尔 true 或 false 语句,并将其保存为布尔数据类型。
using System;
public class Demo
{
public static void Main()
{
Console.WriteLine("Input y");
string answer = Console.ReadLine();
if (answer == "y")
{
bool InputY = bool.Parse(answer);
Console.WriteLine("You have saved a 'True' statement in the boolean with name of 'InputY'");
}
else
{
Console.WriteLine("Any random text");
}
}
}
Run Code Online (Sandbox Code Playgroud)
Boolean.Parse(选择性引号):
退货
Boolean如果值等于 则为 true
TrueString;如果 value 等于 则为 falseFalseString。例外情况
FormatException
value不等于TrueString或FalseString。
评论
该字段等于字符串
"True"。
评论
该字段等于字符串
"False"。
正如您所看到的,Parse仅接受字符串"True"或"False",这不是您所需要的。
但是......您已经位于处理真实输入的分支上if (answer == "y"),因此您不需要进行任何其他类型的解析。
你可以这样做:
if (anwser.ToLower() == "y")
{
// deal with answer yes
}
else if (answer.ToLower() == "n")
{
// deal with answer no
}
else
{
// deal with answer outside of y/n
}
Run Code Online (Sandbox Code Playgroud)
如果您想要一个布尔值来代表他们的答案,那么您可以类似地创建一个函数:
bool ParseYNString(string stringToParse)
{
if (stringToParse.ToLower() == "y")
return true;
if (stringToParse.ToLower() == "n")
return false;
throw new FormatException(/* message */);
}
Run Code Online (Sandbox Code Playgroud)
您可以更进一步,创建一个函数来获取 Y/N 输入:
bool GetYNFromConsole(string prompMessage, string tryAgainMessage)
{
Console.Write(prompMessage);
while (true)
{
string line = Console.ReadLine();
if (line.ToLower() == "y")
return true;
if (line.ToLower() == "n")
return false;
Console.Write(tryAgainMessage);
}
}
Run Code Online (Sandbox Code Playgroud)
这当然只是一个起点。您应该根据您的需要定制它。
| 归档时间: |
|
| 查看次数: |
612 次 |
| 最近记录: |