标签: stringbuilder

StringBuilder类的线程安全性

class Test {
    public string GetData() {
        StringBuilder sb = new StringBuilder();
        sb.Append("aassffss");
        sb.Append("bbhhhhh");
        return sb.ToString();
    }
}
// calling from multithreads,as below, 
// from each thread i will create new 
// instance and call method.

Test t = new Test(); 
t.GetData();
Run Code Online (Sandbox Code Playgroud)

根据MSDN.类的任何实例成员StringBuilder都不是线程安全的.所以我相信这不是线程安全的.我对么?

c# stringbuilder multithreading thread-safety

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

删除 StringBuilder SQL 查询中的最后一个逗号

我正在使用 String Builder 创建 SQL 更新查询,如果末尾有逗号,我需要将其删除。

例如:

 Dim query As New StringBuilder
 query.AppendLine("Update Vendor")
 If Not String.IsNullOrEmpty(vendInfo.Name) Then
      query.AppendLine("Set VendorName= @VendorName, ")
 End If
 If Not String.IsNullOrEmpty(vendInfo.VendorType) Then
      query.AppendLine("VendorType= @VendorType, ")
 End If
Run Code Online (Sandbox Code Playgroud)

最后一项的查询错误,因为总会有一个逗号。一旦我完成了我所有的 If 语句,我想从末尾删除一个逗号。

有任何想法吗?

sql vb.net string stringbuilder

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

使用StringBuilder重复一个字符串

我想重复.-40次并将其保存到string使用中StringBuilder

为什么这不起作用?

string result = new StringBuilder("").Append(".-",0,40).ToString();
Run Code Online (Sandbox Code Playgroud)

我知道其他解决方案,但我想使用StringBuilder

c# string stringbuilder

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

为什么StringBuilder.append时间复杂度为O(1)

通过摊销分析,我们知道N使用StringBuilder#append方法插入需要O(N)时间。但是,这是我迷路的地方。考虑这inputString是来自用户的输入字符串。

for (int i = 0; i < N; i++) {
   s.append(inputString); 
   // where s is an empty StringBuilder object at the beginning 
   // and inputString is the string that is taken from the user
}
Run Code Online (Sandbox Code Playgroud)

O(inputString.length * N)由于append()将输入字符串复制到时间的末尾,时间复杂度应该为StringBuilder N吗?为什么我们认为这append()需要O(1)时间复杂性,而应该考虑O(inputString.length)呢?

我检查的几乎所有地方都将其视为O(1),例如https://quora.com/What-is-the-complexity-of-Java-StringBuffer-append以及此简单代码段的复杂性什么?

java stringbuilder

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

如何在 Kotlin 中向 StringBuilder 添加新行

在 Java 中,以下代码是一种实现方式。

StringBuilder result = new StringBuilder();
result.append(someChar);
result.append("\n");
Run Code Online (Sandbox Code Playgroud)

在kotlin中这样做的惯用方式?

stringbuilder kotlin

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

寻找一种 GC 友好的方式来频繁地替换子字符串

我的目标是简单地替换子字符串,但非常频繁。该程序在Android中运行。

比如我有一个 string ={a} is a good {b}.和一个 map= {{a}=Bob, {b}=boy},结果应该是Bob is a good boy.我需要处理不同字符串的这种替换最多 400 次对等秒,因为 map 的值会实时更新。

但是我使用 trie 树和 Aho-Corasick 自动机来获得高性能,这是核心片段:

    val builder: StringBuilder

    private fun replace(str: String): String {
        if (!getFail) {
            getFail()
        }
        var p = 1
        builder.setLength(0)
        for (c in str) {
            builder.append(c)
            if (c.toInt() !in 0..126) {
                continue // ignore non-ascii char
            }
            var k = trie[p][c.toInt()]
            while (k > 1) {
                // find a tag
                if (end[k] …
Run Code Online (Sandbox Code Playgroud)

string stringbuilder android garbage-collection kotlin

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

在 C# 中反转字符串中的元音

我试图将一个字符串作为输入并返回只有元音反转的字符串。它没有错误,但不是没有错误。它在Test19()Test20 上失败。没有想法如何解决这个问题或为什么我在这个测试中遇到问题。所有其他测试通过。第一个代码块是我的代码,然后是我在第二个块中创建的测试。

这是该页面的链接,其中详细介绍了我所做的测试的更多信息。 Nunit.org StringAssert (NUnit 2.2.3)

using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Vowels
{
    public class reverseVowels
    {
        public static bool IsVowel(char c)
        {
            char[] vowels = new[] { 'a', 'e', 'i', 'o', 'u', 'A', 'E', 'I', 'O', 'U' };
            return vowels.Any(ch => ch == c);
        }

        public static string reverseVowelsOfString(string s)
        {
            List<char> list = (from char c in s
                               where IsVowel(c)
                               select c).ToList();
            StringBuilder sb = new StringBuilder();

            foreach (char v in …
Run Code Online (Sandbox Code Playgroud)

c# linq stringbuilder nunit list

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

为什么更改 StringBuilder 会更改其 hashCode?

这是输入。

    public static void main(String[] args){

        StringBuilder builder = new StringBuilder("hello");
        printBuilder(builder);

        // append
        builder.append(" everyone");
        printBuilder(builder);

        builder.append(", what's up?");
        printBuilder(builder);
    }

    private static void printBuilder(StringBuilder dataBuild){
    StringBuilder build = new StringBuilder(dataBuild);
    System.out.println("data = " + build);
    System.out.println("length = " + build.length());
    System.out.println("capacity = " + build.capacity());
    int addressBuild = System.identityHashCode(build);
    System.out.println("address = " + Integer.toHexString(addressBuild);
    }
Run Code Online (Sandbox Code Playgroud)

这是输出。

  • 数据=你好
  • 长度 = 25
  • 容量 = 21
  • 地址 = 5b480cf9
  • 数据=大家好
  • 长度 = 14
  • 容量 = 30
  • 地址 = 6f496d9f
  • data = …

java stringbuilder hashcode

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

Java 编译器如何处理 StringBuilder(a + b + c + d)?

我正在处理一个包含大量遗留代码的应用程序。我经常看到的是在 StringBuilder 参数中使用“+”进行字符串连接。
例子:

StringBuilder sb = new StringBuilder("This "
        + "looks "
        + "rather "
        + "weird "
        + "to "
        + "me.") 
Run Code Online (Sandbox Code Playgroud)

据我所知,编译器用 StringBuilder().append() 替换了使用 + 运算符的字符串连接。
恐怕现在编译器会创建一个临时的 StringBuilder 来执行连接,然后转换为 String() 并将结果插入现有的 StringBuilder。

我的问题是:编译器是否能够优化嵌套的 StringBuilder?如果不是,我应该重写代码以节省几个 CPU 周期吗?它显然是有效的,但每当我看着它时它都会伤害我的眼睛。

感谢您的任何见解!

java stringbuilder

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

C# 中使用字符串生成器进行 SQL 查询

我对 C# 非常陌生,当我尝试使用 stringbuilder 执行 sql 查询时遇到了一些问题。

\n

这是名为 的表的一部分:

\n
| ID   | Name      | InternalID |\n|:----:|:---------:| :---------:|\n| 1    | Emory Lu  | 84765      |\n| ...  | ...       | ...        |\n| 8    | John Smith| 52455      |\n| 9    | John smith| 49         |\n| ...  | ...       | ...        |\n
Run Code Online (Sandbox Code Playgroud)\n

请注意,在此表中为 John Smith 分配了两个不同的 InternalID(字符串类型)。在第二条记录中,他的姓氏以小写“s”开头。

\n

我在输入员工姓名\xef\xbc\x9a时执行了一个简单的sql查询来选择员工的InternalID(字符串类型)

\n
public DataTable findInternalID(string name)\n{\n    RecordConnection.Open();\n    DataTable output = new DataTable();\n    OleDbCommand bdCommand = RecordConnection.CreateCommand() as OleDbCommand;\n    StringBuilder x = new StringBuilder();\n\n …
Run Code Online (Sandbox Code Playgroud)

c# sql database ms-access stringbuilder

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