标签: stringbuilder

P /调用函数传递StringBuilder

在一个C#文件中,我有一个

class Archiver {
    [DllImport("Archiver.dll")]
    public static extern void archive(string data, StringBuilder response);
}
Run Code Online (Sandbox Code Playgroud)

字符串数据是一个输入,StringBuilder响应是函数写入的东西

归档函数原型(用C编写)如下所示:

void archive(char * dataChr, char * outChr);
Run Code Online (Sandbox Code Playgroud)

它在dataChr中接收一个字符串,然后执行一个

strcpy(outChr,"some big text");
Run Code Online (Sandbox Code Playgroud)

从C#我称之为:

string message = "some text here";
StringBuilder response = new StringBuilder(10000);
Archiver.archive(message,response);
Run Code Online (Sandbox Code Playgroud)

这是有效的,但问题是,你可能会看到我给StringBuilder大小赋值,但是归档函数可能会返回一个比我给我的StringBuilder大小更大的文本.有任何解决这个问题的方法吗?

c c# pinvoke stringbuilder dllimport

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

清除字符串构建器的性能是哪一个?

问:

哪一个是性能明智的:清除字符串构建器

AStringBuilder.Remove(0,AStringBuilder.Length);
Run Code Online (Sandbox Code Playgroud)
string theString = AStringBuilder.ToString();
ABuilder.Replace(theString,String.Empty);
Run Code Online (Sandbox Code Playgroud)
AStringBuilder.Length = 0;
Run Code Online (Sandbox Code Playgroud)

注意:我使用不包含Clear()方法的Framework 3.5 .

c# string performance stringbuilder .net-3.5

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

Java:使用StringBuilder进行线程安全

我有一个场景,我想在方法中StringBuilder用作局部变量.我理解如果StringBuilder是一个本地方法变量,它不应该有任何关于线程安全的问题.

但是,如果我追加StringBuilder一个实例变量,如:

class MyClass {
    private List<String> property;

    public void myMethod() {
        StringBuilder sb = new StringBuilder();
        for(String s : property) {
            sb.append(s);
        }
    }

    // some other methods that mutate property
}
Run Code Online (Sandbox Code Playgroud)

我认为要使这个线程安全,只需更改StringBuilderStringBuffer是不够的.我可以同步属性本身吗?

java stringbuilder multithreading thread-safety

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

StringBuilder是否仅在循环场景中首选?

我理解这StringBuilder是在循环中连接字符串的选择,如下所示:

List<string> myListOfString = GetStringsFromDatabase();
var theStringBuilder = new StringBuilder();

foreach(string myString in myListOfString)
{
    theStringBuilder.Append(myString);
}

var result = theStringBuilder.ToString();
Run Code Online (Sandbox Code Playgroud)

但是哪些场景StringBuilder表现优异String.Join(),反之亦然?

var theStringBuilder = new StringBuilder();
theStringBuilder.Append("Is this ");
theStringBuilder.Append("ever a good ");
theStringBuilder.Append("idea?");

var result = theStringBuilder.ToString();
Run Code Online (Sandbox Code Playgroud)

要么

string result = String.Join(" ", new String[]
            {
                "Or", "is", "this", "a", "better", "solution", "?"
            });
Run Code Online (Sandbox Code Playgroud)

任何指导将不胜感激.

编辑:是否有一个阈值,其中的创建开销StringBuilder是不值得的?

c# stringbuilder

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

Java - 使用String而不是StringBuilder的StringBuilder

我正在使用StringBuilder,而不是String在我的代码中努力使代码在所有解析和连接期间节省时间.

但是当我查看它的来源时,substring()方法 AbstractStringBuilder又因此StringBuilder返回a String而不是a StringBuilder.

这背后会有什么想法?

谢谢.

java string stringbuilder

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

为什么我会遇到StringFormat错误?

使用此代码(sbJava是一个StringBuilder):

String androidFindLine = string.Format("Button _{0} = (Button) findViewById(R.id.{0});\"", btnId);
sbJava.Append(androidFindLine);
sbJava.Append(Environment.NewLine);
sbJava.Append(string.Format("_{0}.setOnClickListener(new View.OnClickListener() { ", btnId));
Run Code Online (Sandbox Code Playgroud)

我明白了

System.FormatException未处理_HResult = -2146233033 _message =输入字符串格式不正确...

btnId的值是"btnbutton_up"

问题是什么?

c# stringbuilder string.format

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

同时创建AbstractStringBuilder和StringBuilder有什么意义?

Java开发人员为什么不创建一个类AbstractStringBuilder并将其重命名为StringBuilder

例如,以下方法AbstractStringBuilder

public AbstractStringBuilder append(double d) {
    FloatingDecimal.appendTo(d,this);
    return this;
}
Run Code Online (Sandbox Code Playgroud)

和中的方法StringBuilder

@Override
public StringBuilder append(double d) {
    super.append(d);
    return this;
}
Run Code Online (Sandbox Code Playgroud)

我想我们只能保留一种方法AbstractStringBuilder,它将很好地工作。创建无用包装的目的是StringBuilder什么?

java stringbuilder

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

哪种解决方案具有更好的性能:StringBuilder或String Interpolation-Concatenation

我正在使用Scala将文件写入磁盘.

要创建将写入文件的整个String,我正在迭代我的数据并将所有信息附加到StringBuilder对象.

例如:

val moreData = getMoreData
strBuilder.append(moreData)
strBuilder.append("even more data")
//...
strBuilder.toString
Run Code Online (Sandbox Code Playgroud)

在操作结束时,我然后调用StringBuilder的toString方法,并写入Path.

我知道Scala对字符串有编译优化,所以我的问题是:

哪种方法具有更好的性能.String-Interpolation-Concatenation或StringBuilder?

这些编译优化是否与StringBuilder有某种关联?换句话说,StringBuilder追加操作是否有优化?

string stringbuilder scala string-interpolation

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

将StringBuilder附加到另一个StringBuilder

我写了一些代码,里面有很多字符串创建.为了避免一遍又一遍地避免昂贵的字符串创建,我正在使用java StringBuilder类.

我的代码有点像这样:

public String createString(){
  StringBuilder stringBuilder = new StringBuilder();
  for(int i = 0; i < Integer.MAX_VALUE ; i++){ //its not actually this, but it's a large loop. 
      stringBuilder.append(appendString())
  }
  return stringBuilder.toString();
}
Run Code Online (Sandbox Code Playgroud)

appendString方法还实例化a StringBuilder并附加到它.

为了节省时间,我注意到我可以让我的appendString方法返回a StringBuilder,而不是String避免使用如下.toString()方法返回stringBuilder :

public StringBuilder appendString(){
  StringBuilder appendBuilder = new StringBuilder();
  appendBuilder.append("whatever");
  return appendBuilder;
}
Run Code Online (Sandbox Code Playgroud)

这一切都很好,直到我查看StringBuilder文档并意识到类append(StringBuilder stringBuilder)上没有方法StringBuilder,只有一个append(String string).

所以我的问题是,这段代码是如何运行的?难道铸造StringBuilderString呢?

java string stringbuilder

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

StringBuilder和重音

我有一个StringBuilder,我想写一个包含重音到csv文件的文本.

码:

StringBuilder strbr = new StringBuilder();
strbr.AppendLine("ù;é;à");
File.WriteAllText(filePath + ".csv", strbr.ToString());
Run Code Online (Sandbox Code Playgroud)

但是当我打开我的csv文件时,只有: é

文件"test.csv"正确包含ù;é;à,但当我用Excel打开它时,我有:

Excel截图

也许我错过了Excel的标题?

c# stringbuilder encoding

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