簡體   English   中英

在String.Format()上使用“控件數組”作為參數

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM