如何添加到 StringBuilder?

Posted

技术标签:

【中文标题】如何添加到 StringBuilder?【英文标题】:How to prepend to a StringBuilder? 【发布时间】:2014-08-07 21:37:54 【问题描述】:

VB.NET 有一个方法,就像 java 一样,可以附加到 StringBuilder 类型的对象上 但是我可以在这个对象之前添加一些字符串吗(我的意思是在 stringbuilder 值之前添加一些字符串,而不是之后)。这是我的代码:

'Declare an array
    Dim IntegerList() = 24, 12, 34, 42
    Dim ArrayBefore As New StringBuilder()
    Dim ArrayAfterRedim As New StringBuilder()
    ArrayBefore.Append("")
    For i As Integer = IntegerList.GetLowerBound(0) To IntegerList.GetUpperBound(0)
        ArrayBefore.Append(IntegerList(i) & ", ")
    Next
    ' Close the string
    ArrayBefore.Append("")
    'Redimension the array (increasing the size by one to five elements)
    'ReDim IntegerList(4)

    'Redimension the array and preserve its contents
    ReDim Preserve IntegerList(4)

    ' print the new redimesioned array
    ArrayAfterRedim.Append("")
    For i As Integer = IntegerList.GetLowerBound(0) To IntegerList.GetUpperBound(0)
        ArrayAfterRedim.Append(IntegerList(i) & ", ")
    Next
    ' Close the string
    ArrayAfterRedim.Append("")

    ' Display the two arrays

    lstRandomList.Items.Add("The array before: ")
    lstRandomList.Items.Add(ArrayBefore)
    lstRandomList.Items.Add("The array after: ")
    lstRandomList.Items.Add(ArrayAfterRedim)

如果您查看我的代码的最后 4 行,我想在我的列表框控件中的一行中添加字符串生成器之前的文本。所以代替这个:

 lstRandomList.Items.Add("The array before: ")
    lstRandomList.Items.Add(ArrayBefore)

我想要这样的东西:

lstRandomList.Items.Add("The array before: " & ArrayBefore)

【问题讨论】:

不是很清楚问题是什么。试试"The array before: " & ArrayBefore.ToString Stringbuilder 有一个 Insert 方法,所以如果你在 0 处插入,你就是在等待。 为什么要重新调整阵列?你真的想在这里做什么? 【参考方案1】:

您可以使用StringBuilder.Insert 预先添加到字符串生成器:

Dim sb = New StringBuilder()
sb.Append("World")
sb.Insert(0, "Hello, ")
Console.WriteLine(sb.ToString())

这个输出:

Hello, World

编辑

糟糕,注意到@dbasnett 在评论中说了同样的话...

【讨论】:

【参考方案2】:

使用StringBuilderFor 循环,您的代码似乎有点过头了。

为什么不这样做?

Dim IntegerList() = 24, 12, 34, 42

lstRandomList.Items.Add("The array before: ")
lstRandomList.Items.Add(String.Format("0", String.Join(", ", IntegerList)))

ReDim Preserve IntegerList(4)

lstRandomList.Items.Add("The array after: ")
lstRandomList.Items.Add(String.Format("0", String.Join(", ", IntegerList)))

工作完成。更简单的代码。

【讨论】:

以上是关于如何添加到 StringBuilder?的主要内容,如果未能解决你的问题,请参考以下文章

Java StringBuffer 和 StringBuilder 类

Java StringBuffer和StringBuilder类

StringBuilder

StringBuilder

StringBuffer和StringBuilder类

为啥 StringBuilder 访问似乎是同步的? [复制]