【问题标题】:How to get an array to display all its values at once如何让数组一次显示其所有值
【发布时间】:2012-01-04 22:46:33
【问题描述】:

这里是一些示例代码:

Dim arrValue(3) as Integer
arrValue(0) = 5
arrValue(1) = 4
arrValue(2) = 7
arrValue(3) = 1

如何将这四个值并排显示。

更具体地说,鉴于这些值,我怎样才能使 txtValue.Text = 5471

编辑:

我的想法是使用某种函数将每个函数附加到末尾,使用如下循环:

Dim finalValue
For i As Integer = 3 To 0 Step -1
    arrValue(i).appendTo.finalValue
Next

很明显,尽管前提是合理的,但代码不起作用先到一个字符串。

【问题讨论】:

    标签: vb.net arrays loops


    【解决方案1】:

    另一种方法是使用String.Join:

    Sub Main
        Dim arrValue(3) as Integer
        arrValue(0) = 5
        arrValue(1) = 4
        arrValue(2) = 7
        arrValue(3) = 1
    
        Dim result As String = String.Join("", arrValue)
    
        Console.WriteLine(result)
    End Sub
    

    【讨论】:

    • 有什么办法可以扭转它加入的方向吗?它从 arrValue(0) 向上构建字符串,但我希望它从上到下写入 arrValue(0)。换句话说,使用这种方法,当我希望它返回 100 时,它返回 001。我该如何解决?
    • 旧帖,但可能对其他人有用 - RE:如何获得相反的输出顺序,您可以使用 Array.Reverse(arrValue) 来反转数组中值的顺序
    【解决方案2】:

    如果我正确理解您的问题,您可以使用 StringBuilder 将值附加在一起。

    Dim finalValue as StringBuilder
    finalValue = new StringBuilder()
    For i As Integer = 3 To 0 Step -1
        finalValue.Append(arrValue(i))
    Next
    

    然后返回finalValue.ToString()

    【讨论】:

    • 嗯,我将不得不对此进行一些测试,看看我能做什么。谢谢!如果可行,我会投票并接受您的回答
    • VB.net 根本无法识别 StringBuilder。您的示例和发布的与 StringBuilder 相关的另一个示例都返回了构建错误。
    • 抱歉,您需要添加Imports System.Text
    • 去哪里?声明里有吗?
    【解决方案3】:

    将整数转换为字符串,并将它们连接起来:

    Dim result as String = ""
    For Each value as Integer in arrValue
      result += value.ToString()
    Next
    

    注意:如果您有很多字符串,使用+= 连接字符串的效果会很差。那么你应该改用StringBuilder

    Dim builder as New StringBuilder()
    For Each value as Integer in arrValue
      builder.Append(value)
    Next
    Dim result as String = builder.ToString()
    

    【讨论】:

    • Stringbuilder 听起来像我需要的,但我不知道它是什么或如何使用它。我需要一个例子来说明它在上面列出的情况下是如何工作的。
    • @MarkKramer:我在上面添加了一个示例。
    • VB.net 根本无法识别 StringBuilder。您的示例和与 StringBuilder 相关的另一个示例都返回了构建错误
    • 你只是没有导入 StringBuilder 类所在的命名空间。使用System.Text.StringBuilder,或导入System.Text 命名空间。
    • @MarkKramer:这不是您可以在每个答案中包含的内容。有些事情必须假设,就像我假设您知道如何复制一段代码并将其粘贴到代码中的正确位置,并且您可以根据需要调整代码,例如通过重命名变量。
    【解决方案4】:
    for i = lbound(arrValue) to ubound(arrValue)
    ss=ss & arrValue(i)
    next i
    end for 
    debug.print ss
    

    【讨论】:

    • 感谢您的贡献,但最好能稍微解释一下您的解决方案的作用,并利用代码块格式生成更具可读性的文本。
    • 欢迎来到 Stack Overflow!虽然这段代码可以解决问题,including an explanation 解决问题的方式和原因确实有助于提高帖子的质量,并可能导致更多的赞成票。请记住,您正在为将来的读者回答问题,而不仅仅是现在提问的人。请edit您的答案以添加解释并说明适用的限制和假设。 From Review
    【解决方案5】:
    Dim value as string = ""
    
    
    For A As Integer = 1 To Begin.nOfMarks
       value += "Mark " & A & ": " & (Begin.Marks(A)) & vbCrLf 
    Next A
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-07-28
      • 2021-10-25
      • 1970-01-01
      • 1970-01-01
      • 2012-10-25
      • 1970-01-01
      • 1970-01-01
      • 2020-01-10
      相关资源
      最近更新 更多