C# 命令行变量/字符串
我的代码看起来像这样,但我把它缩短了一点C# 命令行变量/字符串,c#,C#,我的代码看起来像这样,但我把它缩短了一点 public static void mainvoid() { string line = Console.ReadLine().ToLower(); if (line == "restart") { Console.Clear(); Main(); } if (line == "enter a value: ") {
public static void mainvoid()
{
string line = Console.ReadLine().ToLower();
if (line == "restart")
{
Console.Clear();
Main();
}
if (line == "enter a value: ")
{
string value = console.ReadLine();
console.writeline("Your value is {0}", value);
mainvoid();
}
if (line == "my name")
{
Console.WriteLine("Your name is {0}", ConsoleApplication1.Properties.Settings.Default.name);
mainvoid();
}
我希望我的程序拾取一个命令(我已经这样做了),其中一些命令后面有值/字符串,例如。
顺便说一下,我用的是c#2010
我希望我的命令看起来像这样
我叫丹尼尔因此字符串/值=Daniel 或
name=比利 所以字符串/值=比利 所以我希望它通过console.readline()获取它;然后选择它正在更改名称,然后是它将更改为的名称 但我不知道如何使最后一位成为我也可以使用的值/字符串
如果您能帮助我,请留下评论:)如果您不想通过
Console.ReadLine()拾取命令,请使用Console.ReadKey(true)
拾取命令。你的文字不会改变
下面是一个例子:
ConsoleKeyInfo ck = Console.ReadKey(true);
if(ck.Key == Keys.Space){
//do something
}
我不太理解你,但我会试着猜:)
如果要检索名称,可以这样写:
Console.Write("Your name is ");
string name = Console.ReadLine();
您可能需要想出自己的语法
例如,我选择了如下语法
<Command Name>:Parameters
ChangeName:Daniel
//现在,我们可以解析该命令并执行所需的操作
//Split the string
String[] inputs= Console.ReadLine().Split(":");//"ChangeName:Bob"
//Generate the enumeration type from the input command
var cmd = (Command) Enum.Parse(typeof(Command), inputs[0] , false);
if(cmd == Command.ChangeName)
{
//Process the parameters in inputs[1]
}
我可以看到这里有两个问题,一个是从“my name is xyz”命令中提取人名,另一个是保存该值以供以后在程序中使用
由于您构建main方法的方式,以及它调用自身(这称为递归)的事实,它不能在一个调用到下一个调用之间共享任何变量。这使得无法存储人员姓名。您可以通过在main方法中创建循环来消除递归
static public void Main()
{
string currentLine;
do
{
currentLine = Console.ReadLine();
}
while (!currentLine.Equals("exit"))
}
这将持续允许用户输入命令,当用户输入“退出”时,程序将终止
现在,关于存储用户名的问题,您只需删除句子中的“my name is”部分即可获得用户名
static public void Main()
{
string username = "Matthew";
string currentLine;
do
{
currentLine = Console.ReadLine();
if (currentLine.Equals("restart"))
{
Console.Clear();
}
if (currentLine.StartsWith("my name is"))
{
username = currentLine.Replace("my name is ", "");
}
if (currentLine.Equals("my name"))
{
Console.WriteLine("Your name is {0}", username);
}
}
while (!currentLine.Equals("exit"))
}
我希望这能让你动起来 我不希望命令在它之后产生一个值,例如:BobJesseJames,我知道那段代码,但我不想这样做。。。我不会把它和代码放在同一行,例如MYNAME=james,james将是字符串…wont与want不同。请做对。@nawfal StackOverflow是一个开放的平台,就像wiki一样,您可以轻松地编辑某人的问题以修复拼写错误,而不是留下无用的评论。请看@MattDavey任何人都可以轻松地修复它(我就是这么做的),但这并不意味着不应该指导一个人正确地获得一些基本的东西。不要再犯这个错误对他自己来说是最重要的。当我纠正了拼写错误后,OP再次编辑了这个问题,错误与我所有的“想要”都是“不会”的。我不得不重新编辑。在这种情况下,永远教他是多么容易和恰当啊!你觉得这有点太复杂了吗?是的。。我可以看出这是一个很好的可扩展解决方案,我自己可能也会做类似的事情,但OP对C#来说显然是新的,所以我只是想知道这对他来说是否有点过头了。感谢allot Matt,它在一个新的测试项目中工作得很好,我现在会尝试将它放到我的主项目中:D
static public void Main()
{
string username = "Matthew";
string currentLine;
do
{
currentLine = Console.ReadLine();
if (currentLine.Equals("restart"))
{
Console.Clear();
}
if (currentLine.StartsWith("my name is"))
{
username = currentLine.Replace("my name is ", "");
}
if (currentLine.Equals("my name"))
{
Console.WriteLine("Your name is {0}", username);
}
}
while (!currentLine.Equals("exit"))
}