2019 9 2 C 命令列解析工具

2022-01-13 15:01:31 字數 3156 閱讀 2677

title

author

date

createtime

categories

c#命令列解析工具

lindexi

2019-09-02 12:57:37 +0800

2018-2-13 17:23:3 +0800

c#我將告訴大家兩個方法去獲取c#輸入的命令列引數。

第乙個方法是不需要安裝任何的庫,這個方法是效能很高,但是封裝不好。第二個方法是使用 commandlineparser 庫,這個庫提高很好的封裝但是效能會比較差。

第乙個方法:

林選臣大神寫的,他的方法很簡單。

首先複製兩個類到專案

public

class

commandlineargumentparser

}public

static

commandlineargumentparser

parse(string args)

public

commandlineargument

get(string

argumentname)

public

ienumerable

getenumerator()

}public

bool

has(string

argumentname)

}public

class

commandlineargument

public

commandlineargument

next

return

null;}}

public

commandlineargument

previous

return

null;}}

public

commandlineargument

take()

public

ienumerable

take(int

count)

return

list;

}public

static

implicit

operator

string(commandlineargument

argument)

public

override

string

tostring()

}

複製完成就可以使用,在主函式可以使用下面**進行轉換,下面**的args就是傳入的引數字串陣列。

var

arguments

=commandlineargumentparser.parse(args);

如果需要獲得引數的資訊,可以使用下面**,也就是使用 get 方法傳入乙個指定的值,通過這個值就可以拿到這個值的引數

varf=

arguments.get("--lindexi"

).take();

如命令輸入--lindexi doubi,上面**就可以拿到doubi,雖然使用這個庫的寫法的封裝不是很好,但是效能很好。下面告訴大家使用另乙個方法,十分容易寫,但是效能比較差。

第二個方法需要使用 nuget 安裝 commandlineparser 庫,可以在控制台輸入下面**安裝

install

-package

commandlineparser

然後寫乙個工具類,**是在申龍斌大神部落格 抄的

class

options

// 新的版本使用的是 char 來作為第乙個字元,也就是需要修改 "d" 為 'd' 字元

// [option('d', "dir", required = true, helptext = "pgn directory to read.")]

// public string pgndir

// 第二個引數-s 也可以使用 --step

[option("s"

, "step"

, defaultvalue

=30, helptext

="the maximum steps in pgn game to process."

)] public

intmaxstep

[helpoption]

public

string

getusage()

}

主程式main裡使用可以使用下面**,這裡的 args 陣列就是主函式傳入函式。下面的**是老版本的寫法

// 老版本的寫法

varoptions

=new

options();

if (parser.default.parsearguments(args, options))

else

上面的**是老的版本,現在更新 2.2.0 版本是需要修改**

class

options

// 第二個引數-s

[option('s', "step"

, helptext

="the maximum steps in pgn game to process."

)] public

intmaxstep

}

原來的 defaultvalue 修改為 default 可以傳入任何型別

在 main 函式需要修改**

commandline.parser.default.parsearguments

(args)

.withparsed(options

=>

).withnotparsed(errorlist

=>

);

在 withparsed 就是解析成功的委託,在 withnotparsed 就是解析失敗的

如何使用參見:

quickstart · gsscoder/commandline wiki

參見:安利一款命令列引數

2019 9 2 C 命令列解析工具

title author date createtime categories c 命令列解析工具 lindexi 2019 09 02 12 57 37 0800 2018 2 13 17 23 3 0800 c 我將告訴大家兩個方法去獲取c 輸入的命令列引數。第乙個方法是不需要安裝任何的庫,這個...

C 命令列解析工具

我將告訴大家兩個方法去獲取c 輸入的命令列引數。第乙個方法 林選臣大神寫的,他的方法很簡單。首先複製兩個類到專案 public class commandlineargumentparser public static commandlineargumentparser parse string a...

C 命令列解析工具

我將告訴大家兩個方法去獲取c 輸入的命令列引數。第乙個方法 林選臣大神寫的,他的方法很簡單。首先複製兩個類到專案 public class commandlineargumentparser public static commandlineargumentparser parse string a...