[英]Using a “array of controls” as parameters on String.Format()
我為查詢使用字符串,如下所示:
Dim auxstring as String
auxstring = String.Format("val1 = {0}, val2 = {1}, valn ={n}", control1.Value, control2.Value, controln.Value)
我想要做的是將String.Format轉換為更具可讀性的內容,如下所示:
<object like an array>.<value1> = data1
<object like an array>.<value2> = data2
<object like an array>.<valuen> = datan
<other object like an array>.<value1> = control1.property
<other object like an array>.<value2> = control1.property
<other object like an array>.<valuen> = control1.property
auxstring = String.Format(<object like an array with values>, <object like an array with controls.properties>)
為了便於閱讀:)
這是解決此問題的快速方法,您是否認為這是對現有代碼的改進是一種意見。
List<string> vals = new List<string>();
int[] data = new int[] { 1, 2, 3, 4 };
for (int i = 0; i < data.Length; i++)
{
vals.Add(string.Format("val{0} = {1}", i + 1, data[i]));
}
string auxstring = string.Join(",", vals.ToArray());
這個簡單的示例使用整數數組,但是將其更改為任何類型並從索引項(在循環中)訪問屬性而不是索引值本身都是微不足道的。
我要做的是將String.Format轉換為更具可讀性的內容
使用行擴展符號(_):
auxstring = String.Format("val1 = {0}, val2 = {1}, valn ={n}", _
control1.Value, _
control2.Value, _
controln.Value)
只要記住它在它之前需要一個空格,並且必須到行中的最后一個字符。
如果您想更簡潔一些,我建議重載format函數。 這樣,您可以使Option Strict保持打開狀態,而不必擔心后期綁定問題。
Dim Values() As Integer = {0, 1, 2}
Dim ValueString As String = Format("val", Values)
Public Function Format(Of T)(Identifier As String, ObjectArray() As T) As String
Format = ""
For I = 0 To ObjectArray.Length - 1
Format += String.Format(Identifier + I.ToString + " = {0} , ", ObjectArray(I).ToString)
Next
Format = Format.TrimEnd({" "c, ","c})
End Function
ValueString將如下所示: "val0 = 0 , val1 = 1 , val2 = 2"
這將使用ToString方法接受任何數組對象。
您可以創建屬性列表,然后動態生成格式字符串以匹配屬性數量:
Dim properties = {
control1.property,
control2.property,
control3.property}
Dim formatString = String.Join(", ", properties.Select(Function(_trash, i) String.Format("val{0} = {{{0}}}", i)))
Dim auxstring = String.Format(formatString, properties)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.