假設下面...評估和演示串碼(插值)
Dim x as string = "hello"
dim y as string = "world"
dim z as string = "{x} {y}" 'Note: no $ (not interpolation)
我想調用一個方法是通過z。如果將返回的「hello world」
注:30z可有0或更多{},並應根據調用者的範圍進行評估
這可能嗎?
假設下面...評估和演示串碼(插值)
Dim x as string = "hello"
dim y as string = "world"
dim z as string = "{x} {y}" 'Note: no $ (not interpolation)
我想調用一個方法是通過z。如果將返回的「hello world」
注:30z可有0或更多{},並應根據調用者的範圍進行評估
這可能嗎?
串插在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
如果在佔位符中使用數字而不是字母,則使用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
作爲格式字符串,即使它是動態的,因爲其餘的參數是一個參數數組,你甚至可以做這樣的事情(儘管它是圍繞着不必要的包裝已經使用的方法):
Public Function MyFormat(format As String, values() As Object) As String
Return String.Format(format, values)
End Function
喜歡的東西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
的問題是,在Z字符串值是不是在設計時已知和{}的數量也是不知道的,所以我在尋找一種方法在運行時,以評估這一點。 – George
@George I更新了我的答案,證明它即使在動態值下也能正常工作。 –