假设以下......
Dim x as string = "hello"
dim y as string = "world"
dim z as string = "{x} {y}" 'Note: no $ (not interpolation )
我想调用一种方法,当传递z时会返回“hello world”
注意:z可以有0或更多{},并且应该根据调用者的范围进行评估
这可能吗?
答案 0 :(得分:2)
VB.NET 14中提供了字符串插值。要插入字符串,请执行以下操作...
Dim x as string = "hello"
Dim y as string = "world"
Dim z = $"{x} {y}"
这是......的简写。
dim z = String.Format({0}{1}, x,y)
有关VB.NET 14的更多信息,请参阅14 Top Improvements in Visual Basic 14
答案 1 :(得分:0)
使用String.Format
,如果您在占位符中使用数字而不是字母:
Dim x As String = "hello"
Dim y As String = "world"
Dim z As String = "{0} {1}"
Dim output As String = String.Format(z, x, y)
因为任何字符串都可以作为格式字符串传递给String.Format
,即使它是动态的,并且由于其余的参数都是param数组,你甚至可以做这样的事情(虽然它是一个不必要的包装器围绕已经可用的方法):
Public Function MyFormat(format As String, values() As Object) As String
Return String.Format(format, values)
End Function
答案 2 :(得分:0)
像SmartFormat.NET这样的named placeholders可能就是你要找的东西。您需要传递所有可能的上下文变量 - 我不知道有什么方法可以捕获当前范围。
Dim x As String = "hello"
Dim y As String = "world"
Dim notUsed As String = "Don't care"
Dim z As String = "{x} {y}"
Dim output As String = Smart.Format(z, New With { x, y, notUsed })
Console.WriteLine(output)
hello world