正在使用我尚未编写的文件,我只是想了解它。我知道下面的代码片段并不多,但我只对一小部分感到困惑。
我只是想知道下面的内容,“{0} \ {1}”意味着什么,如果有人可以帮助我?
下面代码的当前结果给出了c:\ Output \ Folder \ Filename。
的文件路径 private string GetOutputPathForTarget()
{
return string.Format("{0}\\{1}", outputDirectory, settings.Name);
}
如果我想要,例如将另一个子目录添加到此字符串,它将如下所示:
private string GetOutputPathForTarget()
{
return string.Format("{0}\\{1}", outputDirectory, settings.Name, "Images");
}
答案 0 :(得分:6)
不,这不起作用。 string.Format
的可选参数必须有多个占位符。
另一方面,您应该使用Path.Combine
来构建路径。 (见this link)
答案 1 :(得分:4)
"{0}\\{1}"
是format string - {0}
表示'插入第一个参数ToString
此处',{1}
对于第二个参数是相同的。
如果你想插入另一个字符串,你需要告诉String.Format
在哪里插入它:
private string GetOutputPathForTarget()
{
return string.Format("{0}\\{1}\\{2}", outputDirectory, settings.Name, "Images");
}
但我强烈建议你改用Path.Combine
答案 2 :(得分:3)
这些是您希望在指定位置插入常量字符串的字符串的占位符。
答案 3 :(得分:1)
这在MSDN中有详细描述:
<强> string.Format method 强>
请注意,第二个样本没有意义,因为指定了三个参数,但只使用了两个。
如果您想获取任意对象或值(如浮点数)的格式化字符串表示,通常会使用string.Format
。
我们不知道settings.Name
的类型,但如果它是string
类型,则以下代码是等效的:
return outputDirectory + "\\" + settings.Name;
或者:
return Path.Combine(outputDirectory, settings.Name);
后者的优点是您不必担心正确的路径分隔符以及是否需要分隔符。
答案 4 :(得分:1)
要添加子目录,您需要添加另一组{}
。
private string GetOutputPathForTarget()
{
return string.Format("{0}\\{1}\\{2}", outputDirectory, settings.Name, "Images");
}
答案 5 :(得分:1)
String.Format
它用其他参数替换{0}或{1},这会创建一个组合字符串。
例如 - string.Format("{0}:{1}-{3}|{4}","a","b","c","d")
等于"a:b-c|d"
对于您的上一个要求,解决方案是:
return string.Format("{0}\\{1}\\Images", outputDirectory, settings.Name);
答案 6 :(得分:1)
你的例子不起作用!工作代码将是:
return string.Format("{0}\\{2}\\{1}", outputDirectory, settings.Name, "Images");
{n}替换为string.Format函数中的第n个参数。
但是对于构建FileNames,最好使用:
return System.IO.Path.Combine(part1, part2, part3);
亲切的问候, 马库斯