在String.Format中插入格式化字符?

5

我在谷歌上搜索了一下,但是VB.Net(2008)似乎不允许在String.Format中插入格式化字符(例如\t,\r\n):

'BAD MessageBox.Show(String.Format("{0}{tab}{1}", "Foo", "Bar"))
'BAD MessageBox.Show(String.Format("{0}\t{1}", "Foo", "Bar"))
MessageBox.Show(String.Format("{0}" & vbTab & "{1}", "Foo", "Bar"))

有没有更简单的方法来构建包含格式化字符的格式化字符串?
4个回答

11
“更容易”可能是因人而异的,但以下是另一种方法:

MessageBox.Show(String.Join(vbTab, {"Foo", "Bar"}))

我想到了这个:

我也想到了这个:

MessageBox.Show(String.Format("{0}\t{1}\t{2}", "Foo", "Bar", "Test").Replace("\t", vbTab))

2
我想另一个选项是:

我认为还有另一种选择:

String.Format("{1}{0}{2}{0}{3}{0}{4}", vbTab, "Foo", "Bar", "was", "here")

虽然不是最易读的,但比 & vbTab & 更好。


2

使用vbTab(以及vbCrLf等)可以正常工作。

\t \n等是C语言的,不是VB语言的。

{tab}是SendKeys的代码。

我得出结论,除非像这样的代码

MessageBox.Show("Foo" & vbTab & "Bar")

是可能的:它更容易阅读。


0

最近的版本支持插值字符串,将其简化为:

MessageBox.Show(String.Format($"{{0}}{vbTab}{{1}}", "Foo", "Bar"))

或者只是:

MessageBox.Show($"{"Foo"}{vbTab}{"Bar"}")

请注意第一个版本中第一个引号前的 $(以及重复的花括号)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接