gpt4 book ai didi

C# 命令行解析引用路径和避免转义字符

转载 作者:IT王子 更新时间:2023-10-29 04:31:32 25 4
gpt4 key购买 nike

如何解析要解释为路径的命令行参数? args[] 包含在被引用时自动连接的字符串,例如:

example.exe 一二“三四”

args[0] = one
args[1] = two
args[2] = three four

但是,args[] 不会将“C:\Example\”属性解析为参数。相反,它会将参数提供为“C:\Example””(包含额外的引号。)这是由于路径中的反斜杠被视为转义字符,因此是用户在命令中提供的结束引号-line 成为参数的一部分。

.例如:

example.exe 一个 "C:\InputFolder""C:\OutuptFolder\"

args[0] = one
args[1] = C:\InputFolder"
args[2] = C:\OutputFolder"

一个简单的拼凑可能是:

_path = args[i].Replace("\"", @"\");

不过,我确信对此有最佳实践。如何正确解析包含路径的命令行,防止 args[] 数组不正确地填充已解析为转义字符的字符串?

注意:我不想在我的项目中包含整个命令行解析库!我只需要处理引用的路径并希望以“手动”方式进行。请不要推荐 NConsoler、Mono 或任何其他大型“厨房水槽”命令行解析库。

另请注意:据我所知,这不是一个重复的问题。虽然其他问题侧重于通用命令行解析,但此问题特定于当部分路径被解释为转义序列时路径引入的问题。

最佳答案

不是答案,但这里有一些 background and explanation来自 Jeffrey Tan,Microsoft 在线社区支持 (12/7/2006):

Note: this is not not a code defeat but by design, since backslashe are normally used to escape certain special character. Also, this algorithm is the same as Win32 command line arguments parsing function CommandLineToArgvW. See the Remarks section below: http://msdn2.microsoft.com/en-us/library/bb776391.aspx

还引用了 FX 方法 Environment.GetCommandLineArgs进一步解释斜线处理行为。

我个人认为这是一种拖累,我很惊讶我以前没有被它咬过。或者也许我有但不知道?不过,我不认为用斜线盲目替换引号是一种解决方案。我对这个问题投了赞成票,因为它让我大开眼界。

关于C# 命令行解析引用路径和避免转义字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/900087/

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