检查控制台中是否已选择参数

时间:2016-02-05 14:28:35

标签: c# parameters cmd

我正在编写一个flesch索引计算器,我希望能够使用控制台命令和.exe本身启动我的程序。我想使用命令fleschIndexCalc.exe -f "path of the file"读取控制台中的.txt文件,然后能够为参数为-e的英文文本或带{{1}的德文文本选择计算公式}。

当我使用console命令启动时:我自己输入参数。

当我使用.exe启动它时:程序会询问语言,我只需要写-gg并按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();
        }
    }
}

1 个答案:

答案 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();