THX*_*138 9 c# string-formatting
有时我想加入两个字符串,中间有一个空格.但是如果第二个字符串为null,我不想要空格.
考虑以下代码:
void AssertFoo(bool cond, string message = null) {
...
Assert.Fail("Something is foo.{0}", message != null ? " " + message : "");
...
}
Run Code Online (Sandbox Code Playgroud)
有更优雅的方式吗?
Ser*_*rvy 25
这是我喜欢的一个选项.如果你已经掌握了IEnumerable<string>数据,那就更好了,但即使你没有,这也很容易.它也可以很好地扩展到连接的n个字符串,而不仅仅是1或2个字符串.
string[] myStrings = new string[]{"Hello", "World", null};
string result = string.Join(" ", myStrings.Where(str => !string.IsNullOrEmpty(str)));
Run Code Online (Sandbox Code Playgroud)
这是另一种选择.这个案例有点短,但它更难看,更难阅读,而且不是可扩展的,所以我可能会亲自避免它:
//note space added before {0}
Assert.Fail("Something is foo. {0}", message ?? "\b");
Run Code Online (Sandbox Code Playgroud)
在这种情况下,我们将空格添加到格式字符串本身,但如果message为null,我们使用退格符来删除消息中我们知道的空格.