标签: stringbuilder

----在StringBuilder.ToString()的上下文中是什么意思?

stringbuilder.csReference Source页面ToString方法中有以下注释 :

if (chunk.m_ChunkLength > 0)
{
    // Copy these into local variables so that they 
    // are stable even in the presence of ----s (hackers might do this)
    char[] sourceArray = chunk.m_ChunkChars;
    int chunkOffset = chunk.m_ChunkOffset;
    int chunkLength = chunk.m_ChunkLength;
Run Code Online (Sandbox Code Playgroud)

这是什么意思?被----s一些恶意用户可能会插入一个字符串格式化?

.net c# clr stringbuilder reference-source

35
推荐指数
3
解决办法
2054
查看次数

如何检查StringBuilder是否为空?

我必须对一个带StringBuilder两个项目的方法进行单元测试,并填写StringBuilder两个项目之间的差异.

在我的第一次测试中,我给它两个相同的项目,所以我想测试它是否StringBuilder为空.

没有IsEmpty方法或财产.

如何轻松检查这个?

c# stringbuilder conditional-statements

34
推荐指数
2
解决办法
3万
查看次数

PowerShell和StringBuilder

我是PowerShell的新手,但我熟悉.NET类.

System.Text.StringBuilder在PowerShell脚本中使用.脚本就是这样

Function MyStringFunc([String]$line) {
    $r = New-Object -TypeName "System.Collections.Generic.List``1[[System.String]]";
    $sb = New-Object -TypeName "System.Text.StringBuilder";

    foreach ($c in $line) {
        $sb.Append($c);
        $r.Add($sb.ToString());
    }

    return $r;
}

$line1 = "123";
$a = MyStringFunc $line1;
$a
Run Code Online (Sandbox Code Playgroud)

我预计结果是

1
12
123
Run Code Online (Sandbox Code Playgroud)

但结果是

                  Capacity                MaxCapacity                    Length
                  --------                -----------                    ------
                        16                 2147483647                         3
123
Run Code Online (Sandbox Code Playgroud)

我做错什么了吗?

.net powershell stringbuilder

33
推荐指数
2
解决办法
3万
查看次数

StringBuilder的默认容量

什么是默认容量StringBuilder

什么时候应该(或不应该)使用默认值?

.net c# stringbuilder capacity

32
推荐指数
4
解决办法
3万
查看次数

用于字节数组的StringBuilder的等效项

这是一个简单的,我认为可以回答的问题.我确实试图在这里找到答案,但没有提出任何答案 - 如果有我错过的东西,请道歉.

无论如何,是否有相当于StringBuilder的字节数组?

我并不担心所有不同的重载Append()- 但我想看到Append(byte)Append(byte[]).

周围有什么东西或者是你自己的时间吗?

c# stringbuilder bytearray

32
推荐指数
3
解决办法
1万
查看次数

StringBuilder与String考虑替换

在连接大量字符串时,我建议使用StringBuilder如下方法:

StringBuilder someString = new StringBuilder("abc");
someString.append("def");
someString.append("123");
someString.append("moreStuff");
Run Code Online (Sandbox Code Playgroud)

而不是

String someString = "abc";
someString = someString + "def";
someString = someString + "123";
someString = someString + "moreStuff";
Run Code Online (Sandbox Code Playgroud)

这将导致创建相当多的字符串,而不是一个.

现在,我需要做类似的事情,但我没有使用串联,而是使用replaceString 的方法:

String someString = SOME_LARGE_STRING_CONSTANT;
someString = someString.replace("$VARIABLE1", "abc");
someString = someString.replace("$VARIABLE2", "def");
someString = someString.replace("$VARIABLE3", "123");
someString = someString.replace("$VARIABLE4", "moreStuff");
Run Code Online (Sandbox Code Playgroud)

要使用StringBuilder完成同样的事情,我必须这样做,只为一个替换:

someString.replace(someString.indexOf("$VARIABLE1"), someString.indexOf("$VARIABLE1")+10, "abc");
Run Code Online (Sandbox Code Playgroud)

所以我的问题是:"使用String.replace是否更好,并且创建了大量额外的字符串,或者仍然使用StringBuilder,并且有很多冗长的线条,例如上面那个?"

java string stringbuilder replace

32
推荐指数
2
解决办法
3万
查看次数

如何从格式化的字符串中删除空行?

如何在C#中删除字符串中的空行?我在C#(winforms)中生成一些文本文件,由于某种原因,有一些空行.如何在生成字符串后删除它们(使用StringBuilderTextWrite).

示例文本文件:

THIS IS A LINE



THIS IS ANOTHER LINE AFTER SOME EMPTY LINES!
Run Code Online (Sandbox Code Playgroud)

谢谢.

c# regex string stringbuilder

32
推荐指数
3
解决办法
6万
查看次数

"不要在这个热代码路径中使用StringBuilder或foreach"

我正在浏览开源SignalR项目的源代码,我看到这个名为"不要在这个热代码路径中使用StringBuilder或foreach"的差异代码:

-           public static string MakeCursor(IEnumerable<Cursor> cursors)
+           public static string MakeCursor(IList<Cursor> cursors)
            { 
-               var sb = new StringBuilder();
-               bool first = true;
-               foreach (var c in cursors)
+               var result = "";
+               for (int i = 0; i < cursors.Count; i++)
                {
-                   if (!first)
+                   if (i > 0)
                    {
-                       sb.Append('|');
+                       result += '|';
                    }
-                   sb.Append(Escape(c.Key));
-                   sb.Append(',');
-                   sb.Append(c.Id);
-                   first = false; …
Run Code Online (Sandbox Code Playgroud)

.net optimization foreach stringbuilder signalr

32
推荐指数
1
解决办法
1902
查看次数

StringBuilder与StringWriter/StringReader

我最近读过它StringWriterStringReader用于写作和阅读StringBuilder.

好吧,当我使用StringBuilderObject时,它看起来是一个自给自足的类.

我们的阅读和写作的各种方式StringBuilder,使用 StringBuilder.Append(),Insert(),Replace(),Remove()等...

  1. 什么是可能的使用StringWriterStringReader,它StringBuilder本身不能完成?
  2. 它们的实际用途是什么?
  3. 可能的原因是它们没有Stream作为输入(因为任何其他编写器和读取器都将流作为Constructor参数进行操作)但是StringBuilder

.net c# stringbuilder stringreader c#-3.0

31
推荐指数
2
解决办法
2万
查看次数

为什么StringBuilder.AppendLine不添加带有一些字符串的新行?

我正在尝试使用stringbuilder来创建一个字符串体,用于文本(而不是HTML)电子邮件.但是有些行(我包含动态数据,不添加新行,但在某些行中,换行符按预期工作).

在使用stringbuilder类时是否存在基本的缺失或是否存在应该发生的更基本的过程?

在下面的代码中:

sbUser.AppendLine("Please find below confirmation of your registration details. If any of these details are incorrect, please email someone@somewhere.com");
sbUser.AppendLine();
sbUser.AppendLine("Selected event : " + ContentPage.FetchByID(int.Parse(ddlEvent.SelectedValue)).PageTitle); 
sbUser.AppendLine("Date of event : " + thisEvent.EventStartDate.ToString("dd MMM yyyy"));
sbUser.AppendLine("==============================================================");
sbUser.AppendLine();
Run Code Online (Sandbox Code Playgroud)

(ContentPage和thisEvent是使用Subsonic(v2)构建的自定义类.PageTitle是字符串的输出类型)

将此作为输出:

    Please find below confirmation of your registration details. If any of these details are incorrect, please email someone@somewhere.com

Selected event : My Event Date of event : 16 Sept 2012 ==============================================================
Run Code Online (Sandbox Code Playgroud)

正如您所看到的,代码中第3行之后的所有内容都会使所有内容都转到一行.

但是,我使用的代码更进一步:

sbRR.AppendLine("First name : " + txtFirstname.Text.Trim()); …
Run Code Online (Sandbox Code Playgroud)

.net c# stringbuilder newline

31
推荐指数
3
解决办法
6万
查看次数