试图从C#中的一个参数中读取路径时感到沮丧

本文关键字:路径 读取 参数 一个 | 更新日期: 2023-09-27 17:48:53

我正在传递/file:c:''myfile.doc,然后我将返回"/file:cc:''myfile.doc"而不是"c:''myfile/doc",有人能告诉我哪里出了问题吗?

            if (entry.ToUpper().IndexOf("FILE") != -1)
            {
                //override default log location
                MyFileLocation = entry.Split(new char[] {'='})[1];
            }

试图从C#中的一个参数中读取路径时感到沮丧

您在"="而不是":"上进行拆分

尝试

    if (entry.ToUpper().IndexOf("FILE:") == 0)
    {
         //override default log location
         MyFileLocation location = entry.Split(new char[] {':'},2)[1];
    }

实现这一点的最简单方法是只取一个子字符串。由于您是从命令行读取的,因此"/file:"部分将始终保持一致。

entry.Substring(6);

这将返回"/file:"之后的所有内容。

我认为答案已经足够好了,但当你说你是初学者时,我想我会指出:

entry.split(new char[]{':'});

可以是:

entry.split(':');

这使用:

split(params char[] separator);

对于新的C#程序员来说,这可能是骗人的,因为params关键字意味着你实际上可以传入1到多个字符,如:

entry.split(':','.',' ');

您也可以去掉"file:"部分。它是明确定义的,并且将是恒定的,所以它并没有那么糟糕。不太好,但也不可怕。

这里有一个命令行参数解析器的好例子。

您发布的代码需要参数/file=c:'myfile.doc

将其用作参数,或者在冒号上拆分(:),而不是等于(=