试图从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];
}
您在"="而不是":"上进行拆分
尝试
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
。
将其用作参数,或者在冒号上拆分(:),而不是等于(=。