标签: stringbuilder

+ 和 Stringbuilder 附加性能

我做了一个性能测试

    String test="";
    Date st = new Date();
    logger.info("start "+(new Date()).toString());
    for(int i = 0;i<100000;i++) {
        test += "test";  
    }
    logger.info("end "+(new Date()).toString());

    test="";
    StringBuilder sb = new StringBuilder(test);
    logger.info("start Sb "+(new Date()).toString());
    for(int i = 0;i<100000;i++) {
        sb.append("test");  
    }
    test = sb.toString();
    logger.info("end sb "+(new Date()).toString());
Run Code Online (Sandbox Code Playgroud)

结果是

start Fri Jun 30 10:34:42 KRAT 2017
end Fri Jun 30 10:34:55 KRAT 2017
start Sb Fri Jun 30 10:34:55 KRAT 2017
end sb Fri Jun 30 10:34:55 KRAT 2017
Run Code Online (Sandbox Code Playgroud)

相差13秒!!!

但我到处都看到“+”运算符更快的标语,因为从 …

java performance stringbuilder concatenation

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

尝试以特定方式从 StringBuilder 中删除多个特定字符

我试图仅从第一个和第二个索引中删除每个“x”(无论大小写),但我的程序仅删除第一个索引的字母,然后循环而不删除第二个索引。

    Scanner userIn = new Scanner(System.in);        
    StringBuilder str =  new StringBuilder();
    str.append(userIn.nextLine());

    for(int i = 0; i<2; i++) {
        if((str.charAt(i) == 'x') || (str.charAt(i) == 'X')) {
            str = str.deleteCharAt(i);
        }
    }
    System.out.println(str);
Run Code Online (Sandbox Code Playgroud)

java stringbuilder

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

如何更改 C# StringBuilder.AppendLine 行结尾?

我有一个旧的 C# 应用程序,用于StringBuilder.AppendLine添加带有字符串的行,然后计算字符串的校验和。到目前为止,它始终在 Windows 桌面/Windows CE 上运行,因此行结尾始终为\r\n

现在我需要让它在 linux/mono 上同样工作。但随后AppendLine仅添加 a\n而不是 a \r\n

所以我必须向 stringbuilder 添加与 Windows 上相同的行结尾。但如何呢?

s.Append("\r\n");
Run Code Online (Sandbox Code Playgroud)

似乎不起作用。

s.Append(13);
s.Append(10);
Run Code Online (Sandbox Code Playgroud)

也不做这项工作。

c# stringbuilder line-endings

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

如何在java 1.8中的reduce方法中使用StringBuilder?

String s = "apples for you";
StringBuilder returnString = new StringBuilder("");
Arrays.stream(s.split(" "))
        .reduce(returnString, (acc, str) -> acc.append(str.charAt(0)));
Run Code Online (Sandbox Code Playgroud)

预期输出每个单词的第一个字母,即afy

但在acc.append,处出现错误acc被视为 a String

java string stringbuilder java-8 java-stream

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

用java替换字符串中所有标签的最佳方法

我有一个服务方法,它接受一个String,然后用标签库中的项替换String中的标签.如下:

for( MetaDataDTO tag : tagValues )
{
    message = message.replace( tag.getKey(), tag.getText1() );
}
Run Code Online (Sandbox Code Playgroud)

明显; 这使得大量的新字符串变得糟透了.但StringBuilder替换方法很难用于一个字符串中的多个字符串.如何使我的方法更有效?

它用于文本块,例如:

亲爱的#firstName#,#applicationType#的申请已被#approvedRejected#sorry.

其中#firstName#等是元数据数据库中的键.标签也可能不被散列字符包围.

java string stringbuilder replace

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

如何将VB.NET中的扩展名移植到C#?

我在VB.NET中为StringBuilder写了一个扩展来添加一个AppendFormattedLine方法(所以我不必使用其中一个参数来换行符号):

Imports System.Runtime.CompilerServices
Public Module sbExtension
    <Extension()> _
    Public Sub AppendFormattedLine(ByVal oStr As System.Text.StringBuilder, _
                                   ByVal format As String, _
                                   ByVal arg0 As Object)
        oStr.AppendFormat(format, arg0).Append(ControlChars.NewLine)
    End Sub
    <Extension()> _
    Public Sub AppendFormattedLine(ByVal oStr As System.Text.StringBuilder, _
                                   ByVal format As String, ByVal arg0 As Object, _
                                   ByVal arg1 As Object)
        oStr.AppendFormat(format, arg0, arg1).Append(ControlChars.NewLine)
    End Sub
    <Extension()> _
    Public Sub AppendFormattedLine(ByVal oStr As System.Text.StringBuilder, _
                                   ByVal format As String, _
                                   ByVal arg0 As Object, _
                                   ByVal arg1 As Object, …
Run Code Online (Sandbox Code Playgroud)

c# vb.net stringbuilder extension-methods

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

字符串生成器做什么?

什么字符串构建器命令在asp.net cs文件中执行.

.net c# asp.net stringbuilder

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

字符串连接是否为链中的每个字符串在内存中分配新字符串,还是仅为要更改的字符串分配新字符串?

//will need these in a second
string a = "5";
string b = "7";
string c = "3";
Run Code Online (Sandbox Code Playgroud)

所以因为C#会在内存中分配更多的字符串

string mystring = "";
mystring += a;
mystring += b;
mystring += c;
Run Code Online (Sandbox Code Playgroud)

会慢得多

StringBuilder sb = new StringBuilder();
sb.Append(a).Append(b).Append(c);
Run Code Online (Sandbox Code Playgroud)

那么,那么:

string mystring = "";
mystring += a + b + c;
Run Code Online (Sandbox Code Playgroud)

它只是+=缓慢的部分,或者+也是罪魁祸首?

c# string stringbuilder

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

在MVC 3视图中渲染StringBuilder HTML

在我看来,我循环遍历我的模型并构建html以显示在页面上.我正在用stringbuilder和if/else条件构建这个html.

我试图将此字符串渲染为html但我一直卡住了.

这是代码:

@model UserManager.Models.vw_UserManager_Model 
<div id="success-message">
    <fieldset>
        <legend><b>@ViewData["Action"]</b> </legend>
        <!-- User created -->
        <div id="content">

            @Html.Raw("some test string");

            @{
                System.Text.StringBuilder sb = new System.Text.StringBuilder();
                int i = 0;
                sb.Append("<ul>");
                foreach (var item in Model)
                {
                    string s = item.ToString();
                    if (s == "," && i != 1)
                    {
                        // When it finds first delimiter, start building the string
                        i = 1;
                        sb.Append("<li>");
                    }

                    else if (s == "," && i == 1)
                    {
                        // When it finds first delimiter, …
Run Code Online (Sandbox Code Playgroud)

html stringbuilder view asp.net-mvc-3

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

附加Java ArrayList StringBuilder

将List值附加为String时出现一个问题.我将在列表中获得1或超过1的值.然后我需要将这些字符串作为一个字符串追加并为每个字符串使用一个分隔符.但最后还有逗号添加.如何动态地在字符串的末尾删除它.这是我的代码:

cntList = parseXml(metadata.xml);
if (cntList.size() != 0) {
    // entryCountryMap.put(id, country);
    System.out.println("Size is  ---->" + cntList.size());
    StringBuilder sb = new StringBuilder();
    if (cntList.size() >= 2) {
        for (String s : cntList) {
            sb.append(s);
            sb.append(",");
        }
    }
    System.out.println("StringBuilder ----->" + sb.toString());
}
Run Code Online (Sandbox Code Playgroud)

我的输出是这样的:

StringBuilder ----->All Countries,US - United States,
Run Code Online (Sandbox Code Playgroud)

请帮我解决这个问题.谢谢 - 拉吉

java stringbuilder arraylist

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