gpt4 book ai didi

c# - 比较字符串数组的最佳方法(自定义命令行命令)

转载 作者:太空狗 更新时间:2023-10-30 01:08:42 24 4
gpt4 key购买 nike

在我的应用程序中,我制作了一个自定义命令行。我正在寻找最好的方法来检查用户输入的命令和参数是否符合我定义的参数。采用以下示例命令(如果用户按顺序正确输入,该命令将起作用)

do>Drawer /X:Time /Y:Current /N:Window NAme /D:Description

现在我想要一个方法来为我做检查:

private string CheckDrawerArgs(string[] args)
{
var mustExist = new string[4]{"X:", "Y:", "N:", "D:"};

if(args.Length != mustExist.Length)
{
return "Arguments are not completly defined. use 'Drawer /?' for help.";
}

var argsAreRight = false;

var flat = from s1 in args
from s2 in mustExist
where s1.StartsWith(s2)

//how to check if all elements provided
// in args does look
// like (Starts with) elements in mustExist

;
if(argsAreRight == false)
{
return "Bad arguments";
}

//Proceed with rest...
}

所以我正在寻找的是检查用户提供的必需参数是否在 args 中并且它们没有重复,而它们的顺序不会影响检查.. .

期待提示!

最佳答案

我建议以更可重用的方式编写它。必须给出所有参数这一事实不应硬编码到参数解析器的逻辑中。您应该在最后检查一下,就在您“继续休息”之前。

在这种情况下我通常会做以下事情:

首先,对于每个可能的参数,我都有一些包含合理默认值的变量(以便可以省略参数),一个简单的例子是 bool argument_x_given = false;

因此,我遍历给定的参数,并在循环内检查当前参数与每一个可能的参数,以找出它是哪一个。如果没有找到,我们就会出错。如果找到匹配的参数,那么我将解析参数的其余部分(':' 之后的内容)并设置与该参数关联的变量。在执行此操作时,我会检查以确保参数不重复。在这里的简单示例中,这将是 if( argument_x_given ) { --error-- } else { argument_x_given = true; ...

最后,一旦循环完成,我会确保提供了所有必需的参数。

所以,我想说的是,你不会通过比较字符串数组获得任何好处,因为无论如何你都必须弄清楚每一个参数,并且还要比较字符串数组就像试图利用一种非常针对手头问题且根本不可重用的情况。

关于c# - 比较字符串数组的最佳方法(自定义命令行命令),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8693532/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com