C#如何将参数添加到开头带有大括号的字符串中?
我有下一个字符串:C#如何将参数添加到开头带有大括号的字符串中?,c#,C#,我有下一个字符串: public const string BaseAddress = "http://test.i-swarm.com/i-swarm/api/v1/"; public const string LoginURL = "{0}sessions"; 我想创建一个LoginURL的url,其中{0}是基地址。 逻辑方式不起作用: string str = string.Format(BaseAddress, LoginURL); 它只打印基地址。 如果我这样做,它将起作用: s
public const string BaseAddress = "http://test.i-swarm.com/i-swarm/api/v1/";
public const string LoginURL = "{0}sessions";
我想创建一个LoginURL的url,其中{0}是基地址。
逻辑方式不起作用:
string str = string.Format(BaseAddress, LoginURL);
它只打印基地址。
如果我这样做,它将起作用:
string str = string.Format(LoginURL, BaseAddress); //Is this the correct way?
这不是合乎逻辑的方式,您在LoginUrl中定义参数而不是在BaseAddress中,所以它工作正常 如果你想让它正常工作,可以这样做:
public const string BaseAddress = "http://test.i-swarm.com/i-swarm/api/v1/{0}";
public const string LoginURL = "sessions";
Format正在用第一个参数替换{0}
,因此它现在可以正常工作
string str = string.Format(LoginURL, BaseAddress); //Is this the correct way?
是的,这是正确的方法。虽然它不遵循人们通常使用的模式。请阅读此处功能的文档:
第一个参数是格式,第二个是参数/替换值。假设您希望保持一个常量格式,该格式通常是参数中的硬编码格式,如下所示:
string str = string.Format("{0}sessions", BaseAddress);
由于基址看起来通常更一致(但可能仍然是可变的),因此以下方法可能更好:
public const string BaseAddress = "http://test.i-swarm.com/i-swarm/api/v1/";
public const string LoginURL = "sessions";
string str = string.Format("{0}{1}", BaseAddress, LoginURL);
如果您的最终目标只是URL组合,而不是使用string.Format
进行练习,那么以下方法可能仍然是更好的方法:
Uri baseUri = new Uri("http://test.i-swarm.com/i-swarm/api/v1/");
Uri myUri = new Uri(baseUri, "sessions");
这样,您就不必担心基址/相对地址等中是否使用了分隔符。是的,正确的方法是:
string str = String.Format(LoginURL, BaseAddress);
格式字符串应始终是第一个参数
虽然我觉得:
string str = String.Format("{0}sessions", BaseAddress);
更具可读性。没有逻辑方法,只有一种方法符合String.Format
的工作方式<代码>字符串。定义格式,以便第一个参数包含要插入参数的字符串,然后在参数列表之后
如果像这样定义字符串,唯一正确的方法是
string str = string.Format(LoginURL, BaseAddress);
但是,如果BaseAddress
是格式字符串,则更直观:
public const string BaseAddress = "http://test.i-swarm.com/i-swarm/api/v1/{0}";
public const string LoginURL = "sessions";
这样你就可以写作了
string str = String.Format(BaseAddress, LoginURL);
第二个是逻辑(以及实现的)版本。想想如果有多个参数,调用应该是什么样子。MSDN:OP提到过;]他在问为什么(不是我的-1)是的。我的评论是,你编辑了你的答案,这样否决票就没有理由了。我很想撤销我的否决票,但我不能,因为它被锁定了。这很不幸。我在完成之前就提交了这篇文章。不用担心:)