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

本文关键字:选择 参数 控制台 是否 检查 | 更新日期: 2023-09-27 18:33:26

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

当我使用控制台命令启动它时:我自己输入参数。

当我从.exe开始时:程序要求语言,我只需要写ge,然后按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();