标签: stringbuilder

使用多线程访问相同的字符串(StringBuilder)

我的问题是,如果我有时在同一个字符串上使用多线程

字符串不会被替换.(我在记事本上写了这个,所以语法可能是

错误)

使用System.Thread ...其他的课程

class ....
{
    private static StringBuild container = new StringBuilder();

    static void Main(...)
    {
    container.Append(Read From File(Kind of long));
    Thread thread1 = new Thread(Function1);
        Thread thread2 = new Thread(Function2);
    thread1.Start();
    thread2.Start();
    //Print out container
    }

    static void Function1
    {
    //Do calculation and stuff to get the Array for the foreach
    foreach (.......Long loop........)
    {
    container.Replace("this", "With this")
    }
    }
    //Same goes for function but replacing different things.
    static void Function2
    {
    //Do calculation and stuff …
Run Code Online (Sandbox Code Playgroud)

c# string stringbuilder

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

获得更好的性能附加字符串比通过标准Java stringbuilder.append

作为填充搜索引擎的过程的一部分,我也填充了Berekely-DB值存储.每晚重复此过程,此时每晚总运行时间的+/- 60%是由创建要插入值存储的值引起的(因此不包括实际插入Berekely-DB的时间和导致的时间由Berekely客户提供

这些值是通过为每个键分配一个stringbuilder创建的,并且平均将大约1000个字符串附加到这样的stringbuilder.结果值平均约为10k.我想知道这是否可以更有效地完成,因为: - (平均而言)附加到每个Stringbuilders的1000个字符串具有固定长度:即:每个String具有相同的长度并且该长度在前面已知) - 所有字符串被附加到末尾.

例如,为char []或characterStream/writer交换stringbuilder会更高效吗?这样我就可以在char []中保留并索引写入的位置.

谢谢,Geert-Jan

java performance stringbuilder

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

C#中的StringBuilder编组问题

我试图使用C++ DLL在C#中编辑我的StringBuilder对象.我的C++代码如下所示:

extern "C" __declspec(dllexport) void __stdcall PrintHead(char* myString)
{
   myString = "testIsOkey";
}
Run Code Online (Sandbox Code Playgroud)

我的C#代码是:

[DllImport("StringEdit.dll", CharSet = CharSet.Ansi, SetLastError = true, ExactSpelling = false)]

public static extern void PrintHead([MarshalAs(UnmanagedType.LPStr)] StringBuilder stringBuilder);

private void button1_Click(object sender, EventArgs e)
{
   StringBuilder stringBuilder = new StringBuilder("123456");
   PrintHead(stringBuilder);
}
Run Code Online (Sandbox Code Playgroud)

在调用PrintHead之后,我希望看到stringBuilder对象的值从"123456"更改为"testIsOkey",但它不会更改.我无法弄清楚我在哪里弄错了.

谢谢你的帮助.

c# c++ stringbuilder marshalling

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

C#编译器如何使用拆分?

我有一个List<string>我正在迭代并拆分每个项目然后将其添加到StringBuilder.

foreach(string part in List)
{
   StringBuilder.Append(part.Split(':')[1] + " ");
}
Run Code Online (Sandbox Code Playgroud)

所以我的问题是通过这种分割创建了多少个字符串?所有拆分都将产生两个项目.所以...我在想它会创建一个string[2]然后是一个空字符串.但是,它是否会创建连接,string[1] + " "然后将其添加到StringBuilder或优化?

c# stringbuilder split

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

在C#getter中使用StringBuilder会特别糟糕吗?

getter将获得有关它所在的struct的状态的消息,它由struct的属性的组合定义,这些属性是有限的.

首先,这不是关于微优化,我只是认为:

StringBuilder msg = new StringBuilder();
...
msg.AppendLine("static string");
...
Run Code Online (Sandbox Code Playgroud)

看起来更清洁:

String msg = String.Empty;
...
msg = String.Concat(msg, "static string", System.Environment.NewLine)
...
Run Code Online (Sandbox Code Playgroud)

所以只是一种美学选择.

msg变量必须以任何方式初始化为空,因此额外的行不会给我带来麻烦.但是在返回字符串的字段中构造一个新的StringBuilder有多糟糕?

编辑 我只是想知道,如果把一个StringBuilder构造函数的吸气剂要开拓蠕虫的一个巨大的罐头,是荒谬的开销,一些从来没有在干将样的反模式的东西使用构造函数,等等......不知道大家是最喜欢连接非循环字符串的最佳方式.

EDIT2 getter的常用,最佳实践,性能阈值是什么,StringBuilder构造函数是否低于此值?

c# getter stringbuilder

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

StringBuilder自动创建新行

我正在使用StringBuilder将列表转换为单个字符串.我不希望字符串有换行符,但它会自动为附加到字符串的每个列表值添加一个新行.

for (int i = 1; i <= ruleN; i++)
{
    string fizz = "F";
    string buzz = "B";
    string fizzBuzz = "FB";
    List<string> numberSet = new List<string>();
    if(i % ruleA == 0 && i % ruleB != 0) //if i is devisible by A  
                                         //but not B
    {
        numberSet.Add(fizz); 
    }
    if(i % ruleB == 0 && i % ruleA != 0) //if i is devisible by B 
                                         //but not A
    {
        numberSet.Add(buzz);
    }
    if(i % ruleA == 0 && …
Run Code Online (Sandbox Code Playgroud)

c# stringbuilder visual-studio-2010 .net-4.5

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

Java Stringbuilder实现void方法

我对StringBUilder.append()感到困惑.Netbeans说不允许使用void类型.

这是我的Java类Levencthein.java

 public void printDistance(String s1, String s2) {
    System.out.println( computeEditDistance(s1, s2) + " ("+similarity(s1, s2) * 100 +")");
}
Run Code Online (Sandbox Code Playgroud)

现在,在另一个类中,假设b.java

StringBuilder s = new StringBuilder();
for (final JCCDFile file : files) {

        LevenshteinDistance lv = new LevenshteinDistance();
        if (idLexerSelection != getIDLexer()) {
            System.out.println(temp.getName() + " ==> " + file.getName());

            s.append(lv.printDistance(name1, name2)); This is the error


            sb.append(file.getName());
        }
    }
Run Code Online (Sandbox Code Playgroud)

任何解决方案

java stringbuilder void

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

如何打印出数组所代表的负数

我刚刚开始学习Java,我想尝试使用数组来表示大的负数.

假设我有一个数组

[-2, 0, -5] and this represents the number -502
Run Code Online (Sandbox Code Playgroud)

我尝试过使用StringBuilder,但是打印出来了

-50-2
Run Code Online (Sandbox Code Playgroud)

这是我现在的代码.有没有办法让它可以附加第一个否定,然后在我构建一个新的String时跳过其余的底片?

    StringBuilder sb = new StringBuilder();

    for(int x = arr.length-1; x>=0; x--){
        sb.append(arr[x]);
    }
    String check = sb.toString();
    System.out.println(check);
Run Code Online (Sandbox Code Playgroud)

java arrays stringbuilder

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

C#使用StringBuilder追加测试

我使用StringBuilder创建一个长文本,但我想要新行字符'\n'(Unix模式)而不是'\ r \n',然后我会将整个文本写入文件.

我试图在行之间插入'\n'字符并设置AppendFormat方法但没用.

也许我沿'\n'字符分割这个长文本,然后我将这些行分别写在文件中.

    string rowStart = "\n*****" + from + "|" + to;
    StringBuilder sb = new StringBuilder();
    sb.Append(data[0]);

    for (int i = 1; i < data.Count; i++)
    {
        //sb.AppendFormat("\n{0}", rowStart + data[i]); not work
        sb.Append(rowStart + data[i]);
    }
    //var t = sb.Replace("\r\n","\n"); not work
    return sb.ToString();
Run Code Online (Sandbox Code Playgroud)

c# stringbuilder newline

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

使用StringBuilder获取C#中的常量字符串?

在我当前的项目中,他们将每个SQL查询都放在“ QueryList”类中​​,每个查询都是一个不同的Get方法。我不明白的是,它们在这些方法中使用StringBuilder来构建常量字符串,在它们中没有使用任何操作或串联。当我对此提出疑问时,他们说,最好使用串联。据我所知,字符串文字的串联由编译器解决,对吗?编译器中是否对此类StringBuilder代码进行了优化?

我在Java中看到了类似的问题(用于常量的Stringbuilder),对于C#是否应该相同?

public static class QueryList
{
    private static StringBuilder GetQuery
    {
        get
        {
            StringBuilder query = new StringBuilder();

            query.Append(" INSERT INTO ");
            query.Append("  MyTable  ");
            query.Append("  (column1, column2)  ");
            query.Append(" VALUES ");
            query.Append("  (@val1 , @val2) ");

            return query;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

然后在其中被称为

string query = QueryList.GetQuery.ToString();
Run Code Online (Sandbox Code Playgroud)

我进行了一些计数,大约有700种此类方法的调用,所有方法后面都带有“ .ToString();”。我知道在进行实际的字符串连接时会更好,但是只有34个需要它的调用。该程序每秒大约有200个查询。

c# string stringbuilder

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