我正在编写一个flesch索引计算器,我希望能够使用控制台命令和.exe本身启动我的程序。我想使用命令fleschIndexCalc.exe -f "path of the file"
读取控制台中的.txt文件,然后能够为参数为-e
的英文文本或带{{1}的德文文本选择计算公式}。
当我使用console命令启动时:我自己输入参数。
当我使用.exe启动它时:程序会询问语言,我只需要写-g
或g
并按e
。
现在我的问题是:如何在我已经选择语言的控制台启动时告诉我的程序,所以它不会再次问我,就像我用.exe启动它一样?
这是我得到的:
(如果您需要更多来自我的FleschScore.cs的代码请求:))
enter
我选择语言的方法如下:
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();
}
}
}
答案 0 :(得分:4)
您基本上遍历所有参数并跟踪已输入的内容。然后,检查您是否拥有所需的所有信息,并将所有参数作为参数传递给任何方法/类需要它。
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();