检查是否已在控制台中选择参数
本文关键字:选择 参数 控制台 是否 检查 | 更新日期: 2023-09-27 18:33:26
我正在编写一个肉体指数计算器,我希望能够使用控制台命令和.exe本身启动我的程序。我想使用命令fleschIndexCalc.exe -f "path of the file"
在控制台中读取.txt文件,然后能够为带有参数-e
的英文文本或带有-g
的德语文本选择计算公式。
当我使用控制台命令启动它时:我自己输入参数。
当我从.exe开始时:程序要求语言,我只需要写g
或e
,然后按enter
。
现在我的问题:在使用控制台启动程序时,我如何告诉我的程序我已经选择了该语言,这样它就不会像我用.exe启动它那样再次要求我?
这是我得到的:
(如果您需要来自我的FleschScore的更多代码.cs请:)索要)
namespace Flesch_Reading_Ease
{
public class Program
{
public static void Main(string[] args)
{
string fileName = string.Empty;
string[] parameters = new string[] { "-f", "-g", "-e" };
Console.WriteLine("Flesch Reading Ease");
Console.WriteLine("");
if (args.Length == 0)
{
Console.ForegroundColor = ConsoleColor.Red;
Console.WriteLine("error!");
Console.ResetColor();
Console.WriteLine("no file found!");
Console.WriteLine("");
Console.Write("press any key...");
Console.ReadKey();
return;
}
foreach (string arg in args)
{
//------- WHAT TO WRITE HERE? -------
}
fileName = args[0];
FleschScore fs = new FleschScore(fileName);
fs.Run();
}
}
}
我选择语言的方法如下所示:
private void SelectLanguage()
{
do
{
Console.WriteLine("choose language:");
Console.WriteLine("- german(g)");
Console.WriteLine("- english(e)");
string lang = Console.ReadLine();
switch (lang.ToUpper())
{
case "D":
_selectedLanguage = Language.German;
break;
case "E":
_selectedLanguage = Language.English;
break;
default:
_selectedLanguage = Language.Undefined;
Console.WriteLine("wrong input. Enter viable letter.");
Console.WriteLine("");
break;
}
} while (_selectedLanguage == Language.Undefined);
}
您基本上遍历所有参数并跟踪已输入的内容。然后,您检查是否拥有所需的所有信息,并将所有内容作为参数传递给需要它的任何方法/类。
bool isGerman = false;
bool isEnglish = false;
bool nextEntryIsFileName = false;
string filename = null;
foreach (string arg in args)
{
switch (arg)
{
case "-e":
isEnglish = true;
nextEntryIsFileName = false;
break;
case "-g":
isGerman = true;
nextEntryIsFileName = false;
break;
case "-f":
nextEntryIsFileName = true;
break;
default:
if (nextEntryIsFileName)
{
filename = arg;
nextEntryIsFileName = false;
}
break;
}
}
if (!(isEnglish ^ isGerman))
{
// Select language
}
if (String.IsNullOrEmpty(filename))
{
// Ask for filename
}
var language = ...
FleschScore fs = new FleschScore(language, fileName);
fs.Run();