更改字符串构建器对象中的整个字符串

时间:2017-06-06 12:12:32

标签: c# string stringbuilder

我有以下代码:

using System;
using System.Text;

public class Program
{
    private static StringBuilder mystrb = new StringBuilder("hello");
    public static void Main()
    {
        mystrb.Clear();
        mystrb.Append("chau");
    }
}

有没有其他方法可以在字符串构建器中直接替换字符串,我正在寻找一种单句方式(如果存在的话)。

3 个答案:

答案 0 :(得分:3)

重新构建StringBuilder有什么问题?旧的只是垃圾收集。

mystrb = new StringBuilder("chau");

答案 1 :(得分:1)

最好的选择是不要使用默认实例化。由于您要立即用其他内容替换它,只需将其留空(new StringBuilder())或null。

private static StringBuilder mystrb;

如果您的示例代码过于简化,那么只需创建一个新实例:

mystrb = new StringBuilder("chau");

答案 2 :(得分:0)

我认为Ian的解决方案只是用一个新的方法覆盖你的对象是最好的解决方案,但如果由于某种原因你不喜欢它,那么你可以做这样的事情:

static void StringBuilderReplaceText(StringBuilder sb, string newText)
{
    sb.Clear();
    sb.AppendLine(newText);
}

我最初只是从StringBuilder对象继承而添加了一个新的Replace扩展方法,但由于某种原因,该对象显然是sealed

所以,从技术上讲,这将允许您稍后使用StringBuilderStringBuilderReplaceText(myStringBuilder, "my new text");的内容替换为一行,但我真的不明白您为什么要这样做这不仅仅是重用构造函数。