标签: stringbuilder

C#PInvoke out字符串声明

在C#PInvoke中,如何传递字符串缓冲区以便C DLL填充它并返回?PInvoke宣言是什么?

C函数声明是

int GetData(char* data, int buflength);
Run Code Online (Sandbox Code Playgroud)

在C#中,我已将其声明为

[DllImport(DllName)]
static extern Int32 GetData([MarshalAs(UnmanagedType.LPStr)]StringBuilder receiveddata, Int32 buflen);
Run Code Online (Sandbox Code Playgroud)

这是对的吗?我像这样传递StringBuilder变量

int bufferLength = 32;
StringBuilder data = new StringBuilder(bufferLength);
int result = GetData(data, bufferLength);
Run Code Online (Sandbox Code Playgroud)

我想知道它是否正确?

谢谢

c# parameters pinvoke stringbuilder out

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

StringBuilder如何最好地转换为String []?

以下代码有效,但修复了String []中的元素数量.有没有办法让String []动态添加所需的元素数量?

private static StringBuilder names = new StringBuilder();
...
public String[] getNames() {
    int start = 0;
    int end = 0;
    int i = 0;
    String[] nameArray = {"","","",""};

    while (-1 != end) {
        end = names.indexOf(TAB, start);            
        nameArray[i++] = names.substring(start, end);
        start = ++end; // The next name is after the TAB
    }
    return nameArray;
}
Run Code Online (Sandbox Code Playgroud)

java string stringbuilder android

9
推荐指数
1
解决办法
4万
查看次数

字符串转义为XML-Attribute

我看了一下XML转义的字符串,发现它非常有用.

我想做类似的事情:转义要在XML-Attribute中使用的字符串.

该字符串可能包含\ r \n.XmlWriter类产生类似\ r \n - >

我目前使用的解决方案包括XmlWriter和StringBuilder,而且非常难看.

任何提示?

编辑1:
抱歉让LarsH失望,买我的第一个方法是

public static string XmlEscapeAttribute(string unescaped)
{
    XmlDocument doc = new XmlDocument();
    XmlAttribute attr= doc.CreateAttribute("attr");
    attr.InnerText = unescaped;
    return attr.InnerXml;
}
Run Code Online (Sandbox Code Playgroud)

这是行不通的.XmlEscapeAttribute("Foo\r\nBar")会导致"Foo\r\nBar"

我使用.NET Reflector来了解XmlTextWriter如何转义属性.它使用内部的XmlTextEncoder类...

我的方法我目前正在使用这样的方法:

public static string XmlEscapeAttribute(string unescaped)
{
    if (String.IsNullOrEmpty(unescaped)) return unescaped;

    XmlWriterSettings settings = new XmlWriterSettings();
    settings.OmitXmlDeclaration = true;
    StringBuilder sb = new StringBuilder();
    XmlWriter writer = XmlWriter.Create(sb, settings);

    writer.WriteStartElement("a");
    writer.WriteAttributeString("a", unescaped);
    writer.WriteEndElement();
    writer.Flush();
    sb.Length -= "\" />".Length;
    sb.Remove(0, …
Run Code Online (Sandbox Code Playgroud)

c# xml stringbuilder xmlwriter escaping

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

StringBuffer和StringBuilder类之间的区别

我可以通过互联网和Sun Java获得更多.但是需要在一个例子的帮助下获得明显的差异?

StringBuffer 要么 StringBuilder

什么是差异,什么时候更喜欢考虑响应时间.

java stringbuilder stringbuffer

9
推荐指数
0
解决办法
8244
查看次数

为什么字符串连接在C#中没有自动转换为StringBuilder?

可能重复:
为什么String.Concat没有针对StringBuilder.Append进行优化?

有一天,我正在向我的一个朋友咆哮一个特定的Telerik控件.我告诉他生成一个控制树花了几秒钟,在分析后我发现它在循环中使用字符串连接而不是StringBuilder.重写后,它几乎是瞬间完成的.

所以我的朋友听说过,并且似乎很惊讶C#编译器没有像Java编译器那样自动进行转换.阅读Eric Lippert的许多答案,我意识到这个功能没有成功,因为它不值得考虑.但是,如果假设成本实现它的成本很小,那么什么理由会阻止人们去做呢?

c# string stringbuilder compiler-optimization

9
推荐指数
2
解决办法
1257
查看次数

stringbuilder可容纳的最大字符数

我需要写10,000 x 30,000个字符.单个字符串构建器能够对所有字符进行编码,还是应该考虑一组字符串构建器?我无法访问测试用例,因此我无法亲自验证它.希望我能在这里找到答案.

提前致谢.

编辑:

我尝试使用循环添加10000 x 30000个字符.我得到以下例外情况.

Exception in thread "main" java.lang.OutOfMemoryError: Java heap space
at java.util.Arrays.copyOf(Arrays.java:2367)
at java.lang.AbstractStringBuilder.expandCapacity(AbstractStringBuilder.java:130)
at java.lang.AbstractStringBuilder.ensureCapacityInternal(AbstractStringBuilder.java:114)
at java.lang.AbstractStringBuilder.append(AbstractStringBuilder.java:415)
at java.lang.StringBuilder.append(StringBuilder.java:132)
at Test.main(Test.java:19)
Run Code Online (Sandbox Code Playgroud)

如何处理这个"java堆空间"?

java stringbuilder max

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

使用.toString(),String.valueOf()和+""将字符串缓冲区转换为字符串有什么区别

在以下三种情况下,StringBuffer转换为String的主要区别是什么:

案例1:使用toString()

StringBuffer sb = new StringBuffer("Welcome");
String st = sb.toString();
Run Code Online (Sandbox Code Playgroud)

案例2:使用+""

StringBuffer sb = new StringBuffer("Welcome");
String st = sb + "";
Run Code Online (Sandbox Code Playgroud)

案例3:使用String.valueOf()

StringBuffer sb = new StringBuffer("Welcome");
String st = String.valueOf(sb);
Run Code Online (Sandbox Code Playgroud)

哪个是性能方面的最佳实践?

java string stringbuilder

9
推荐指数
2
解决办法
4384
查看次数

在Java中,我应该何时更喜欢String而不是StringBuilder?

我知道StringBuilder应优先于String,因为String将保存在常量字符串池中,并为其分配新值不会覆盖以前的值.但是,StringBuilder是一个覆盖其先前值的对象.

  • 在什么情况下我应该使用String over StringBuilder反之亦然.
  • 另外如果我在Hibernate的支持类中有String类型的变量,我应该使用StringBuilder吗?怎么样?

    ...
    Result result = (Result) criteria.list().get(0);
    
    
    class Result{
       String name;
       String fname;
       ...
    }
    
    Run Code Online (Sandbox Code Playgroud)

java orm stringbuilder hibernate jpa

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

如何在stringbuilder中放置空格

您好我在评论shoutbox时有以下方法显示促销行:

public String getShoutboxUnderline(){
        StringBuilder builder = new StringBuilder();
        builder.append("watch");
        builder.append("on");
        builder.append("youtube");
        builder.append(":");
        builder.append("Mickey");
        builder.append("en");
        builder.append("de");
        builder.append("stomende");
        builder.append("drol");

        return builder.toString();
    }
Run Code Online (Sandbox Code Playgroud)

但是当我得到它时,我得到了watchonyoutube:mickeyendestomendedrol,它没有空格.如何在Stringbuilder中获取空格?

java string stringbuilder

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

为什么String.intern()方法返回两个不同的结果?

我有这样的代码:

String str1 = new StringBuilder("???").append("??").toString();
System.out.println(str1.intern() == str1); //true

String str2 = new StringBuilder("ja").append("va").toString();
System.out.println(str2.intern() == str2); //false

String str3 = new StringBuilder("Str").append("ing").toString();
System.out.println(str3.intern() == str3); //true
Run Code Online (Sandbox Code Playgroud)

我有结果:

String str1 = new StringBuilder("???").append("??").toString();
System.out.println(str1.intern() == str1); //true

String str2 = new StringBuilder("ja").append("va").toString();
System.out.println(str2.intern() == str2); //false

String str3 = new StringBuilder("Str").append("ing").toString();
System.out.println(str3.intern() == str3); //true
Run Code Online (Sandbox Code Playgroud)

我能理解为什么line1和line3是真的,但我是关于line2的问题,为什么这是假的?

我的java是:java版"1.8.0_73"

java string stringbuilder string-interning

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